已解决
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