如何在c语言中实现c#的random.nextDouble

时间:2012-03-25 08:15:54

标签: c

我想在C中生成0到1之间的随机双数。我使用了以下代码 生成它,但我仍然得到p值为0.0000?任何人都可以帮助我吗?

double p;
int max;
int min;
max=1;
min=0;

p=  (double)(rand() % (max - min + 1) + min);

3 个答案:

答案 0 :(得分:1)

尝试以下

p = rand() / (double)RAND_MAX;

答案 1 :(得分:0)

您可以使用drand48;为了您的信息,最新的C ++ 11标准具有强大的标准随机库。

如果您不想使用drand48,则可能会编写例如((double) (rand() % 10000000)) * 1.0e-6但我不建议这样做。

答案 2 :(得分:0)

像基于Tausworthe的PRNG这样的东西会运作良好,LuaJIT2(beta)有一个非常好的变体,可以在[n..m]和[0..1]之间正确缩放,你可以在LuaJIT源代码中的lib_math.c文件。

您还可以查看R here对RNG的使用情况。