您的位置:首页 > 编程语言 > C语言/C++

rand函数的用法

2016-07-19 14:27 295 查看
已解决
rand函数的用法

 悬赏分:20 - 解决时间:2008-4-3 23:20用rand函数产生0到9的随机数: 

1,int(10*rand()/(RAND_MAX+1.0)) 

2,10*rand()/RAND_MAX 

3,rand()%10 

哪种效果更好,第一种是在linux的manu中推荐使用的,文中说不推荐使用第三种,这个我能明白,因为产生随机数的高位比低位更随机,但我感觉第二种也行,为什么非要在RAND_MAX+1.0呢??请高手指点。如果回答的好追加。问题补充:int i=0; 

while(i++<100) 

cout<<(rand()*10/RAND_MAX)<<" "; 

我用了这样一个语句,在100数种,没有发现输出10的情况啊提问者: zhqyzhqychn - 助理
三级 最佳答案rand()函数返回最大值就是RAND_MAX 所以假设rand()函数返回最大值的时候 10*rand()/RAND_MAX = 10, 就不是0到9 了0回答者: feex - 秀才
二级  

 4-3 16:13我来评论>>提问者对于答案的评价:原以为rand最大产生RAND_MAX-1;做了很多次测试都没有RAND_MAX,今天晚上写程序时才发现可以产生谢谢了 相关内容
• 再问关于计算机RAND函数的使用方法 • rand函数的用法 • 请问turbo
c中rand()函数的用法?? • 急急急急急急急急 matlab中rand函数的具体用法 • C里面的rand函数具体介绍,用法? 更多关于rand()/(RAND_MAX+1.0)的问题>> 查看同主题问题:rand
函数 函数 用法 其他回答    共 3 条c不是有random函数么? 

直接random(10);不就行了?回答者: chichujn - 都司
七级  

 4-3 16:15 rand()
函数有一点不合适, 

每次运行程序出现的随机数次序都一样。 

用int random(int max) 好些回答者: ryw12403 - 举人
四级  

 4-3 17:17 如feex所言,如果rand()返回的值刚好是RAND_MAX时,将导致第2个的结果为10,RAND_MAX+1.0是为了使rand()得到的数永远比分母小,这里加的是1.0,为了避免int型溢出为0的情况,1.0的话就
隐式提升为double了,不存在溢出的情况. 

其实,我会选择第3种,因为一看就明白,嘿嘿...回答者: ggdmdf - 江湖少侠
七级  

 4-3 17:35

收藏于 2009-05-03
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 函数