发布日期:2018-03-26
C++随机浮点数的生成+ 查看更多
C++随机浮点数的生成
+ 查看更多
发布日期:2018-02-26 14:31
分类:CPlusPlus
浏览次数:297
我如何在C++中生成一个随机的浮点数?我觉得我可以先得到一个随机的整数,然后用某个数去除它,这样做是不是足够充分?
回答
rand()能在C++中产生一个伪随机数。在RAND_MAX和一点点数学知识的组合下,你可以产生你想要的任意间隔的随机数。这对于学习的目的或者写着玩的程序来说已经足够了。如果你需要满足正态分布的真随机数,你需要使用更加高级的方法。
这个会产生一个在0.0到1.0之间的数。
float r = static_cast(rand()) / static_cast (RAND_MAX);
这个会产生一个从0.0到任意一个随机数X的数。
float r2 = static_cast(rand()) / (static_cast (RAND_MAX/X));
这个会产生一个从任意一个数LO到任意一个数HI的浮点数。
float r3 = LO + static_cast(rand()) /( static_cast (RAND_MAX/(HI-LO)));
记住如果你想产生一个真随机数,rand()是不够的。
在调用rand()之前,你需要调用srand()给随机数生成函数“播种”。这在你的程序运行之前需要做好——不是在你每次调用rand()之前。这一般都是这样做的:
srand (static_cast(time(0)));
你必须包含#include 来调用rand或者srand。
你必须包含#include 来调用time。