随机数的生成


rand() 可获得伪随机数。但是仅仅这样写的话,同一段代码每次运行程序获得的随机数相同。

因为在调用rand()前自动调用了srand(1); 这条语句。 只有当srand()的形参是变化的时每次运行获得的随机数才不同。

用什么样的随时变化的参数呢? 用time(NULL),  即srand((unsigned)time(NULL)); rand(); 这样每次运行得到的随机数不同。

如何获得某个区间的随机数?
      ---- 如果是区间[0,n),   rand()%n 就可以了
      ---- 如果是区间[m,n),  rand()%n+m 就可以了
     ----如果是区[0,1), rand()/double(RAND_MAX) 就可以可以了。(RAND_MAX在cstdlib里有定义)

这里有更详细的介绍:
http://blog.csdn.net/zhoubl668/archive/2009/01/04/3704604.aspx

幸运草 2010-01-21 15:37 发表评论
原文地址:https://www.cnblogs.com/liyuxia713/p/2540795.html