我试图以最大给定概率生成随机概率。我们如何在C中生成0到0.5之间的随机实数值?
答案 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