如何在C中生成一个真正的随机数?

时间:2014-11-04 18:21:08

标签: c

我试图以最大给定概率生成随机概率。我们如何在C中生成0到0.5之间的随机实数值?

1 个答案:

答案 0 :(得分:2)

您无法在便携式C99中生成真正的随机数。但是你可以使用一些PRNG(也许可以用当前时间播种它)。

计算机不知道真正的实数。只有浮点。见http://floating-point-gui.de/

实际上我相信宇宙并不知道实数(想想一些类似于Cantor's diagonal argument的基数论证)。但要问物理学家或哲学家。

某些操作系统或实现具有PRNG,而某些系统(包括)硬件甚至具有真正的随机生成器。

了解random(3)& drand48(3)如果你的系统有它。如果在Linux上,请同时阅读random(4)

您可以尝试

double my_random_number /* between 0 & 0.5 */ = drand48() * 0.5;

生成几乎均匀分布的随机数> = 0且< 0.5

如果您接受C ++代码,请参阅C++11标准标题<random> ...