C与语言之生成随机数

    如果我们要在C语言里生成1-10的随机数该如何操作?

直接调用rand()?

当然不行,rand()返回的是从0到RAND_MAX的值,而RAND_MAX一般等于2^15-1 = 32767。

《The C Programming》里写道:

要生成[10,20]的随机数可以用以下方法

int random = 10 + (int) (10.0 * rand() / (RAND_MAX + 1.0));

好的,10我知道是基数,10.0不用说是 [0,1)范围的系数,但是为什么RAND_MAX 后跟着一个+1.0呢?

其实是老师写错了。。。上面的方法得到的随机数范围是[10,19]

应该是

int random = 10 + (int) (11.0 * rand() / (RAND_MAX + 1));

因为rand()/(RAND_MAX + 1.0)能生成[0,1)

(int)11 * rand()/(RAND_MAX + 1.0) 生成[0,11),即[0,10]

 

 

http://www.dfstermole.net/OAC/hrandom.html

posted on 2014-03-06 11:16  lcaecar  阅读(228)  评论(0)    收藏  举报

导航