C语言, 生成1到100间的随机数, 下面两种方法有什么不同?
1.(int)(100.0*rand()/(RAND_MAX+1.0))+1 2.rand()%100+1
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程序设计软件