当前位置:编程学习 > C/C++ >>

C语言, 生成1到100间的随机数, 下面两种方法有什么不同?

1.(int)(100.0*rand()/(RAND_MAX+1.0))+1 2.rand()%100+1
答案:假设第一次rand返回1010
第二次rand返回2010
rand_max假设为4000
1,100*(1010/4001)+1约等于100*(1/4)+1=26
2,100*(2020/4001)+1=51 约等于 100*(1/2)+1=51
 
3,1010%100+1=11 
4,2010%100+1=11
 
第一个式子扩大了随机数波动对结果的影响 
尽量选择第一个式子 使结果变得更随机性一些
其他:不知道 没什么不同。

可能1产生的随机数的范围 1 -> 99
2产生随机数1 -> 100
尽量选择2

1因为使用了浮点数,精度不可控,产生随机数也要慢一些。 2最好了,1把浮点数扯进来干什么? 

上一个:请问这些c语言题怎么做啊?
下一个:求C程序设计软件

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,