首页 > 其他 > 详细

C与语言之生成随机数

时间:2014-03-06 21:49:26      阅读:373      评论:0      收藏:0      [点我收藏+]

    如果我们要在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

C与语言之生成随机数,布布扣,bubuko.com

C与语言之生成随机数

原文:http://www.cnblogs.com/zeqli/p/3584080.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!