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
第一个式子扩大了随机数波动对结果的影响
尽量选择第一个式子 使结果变得更随机性一些
第二次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个回答 2012-09-07
没什么不同。
可能1产生的随机数的范围 1 -> 99
2产生随机数1 -> 100
尽量选择2
1因为使用了浮点数,精度不可控,产生随机数也要慢一些。
可能1产生的随机数的范围 1 -> 99
2产生随机数1 -> 100
尽量选择2
1因为使用了浮点数,精度不可控,产生随机数也要慢一些。
第2个回答 2012-09-07
2最好了,1把浮点数扯进来干什么?
第3个回答 2012-09-07
不知道