偶然看到 Milo Yip 发的一篇文章:
自然而然
#include <stdio.h>
#include <stdlib.h>
int main() {
unsigned i, j, k = 0, n = 1e8;
for (i = 0; i < n; i++)
for (j = 0; j < RAND_MAX; j += rand())
k++;
printf("%f\n", (double)k / n);
}
$ gcc -O3 a.c && ./a.out
2.718219
(在我这里测试结果是 2.718071)
Uniform Sum Distribution