第一种rand()*1.0/RAND_MAX
第二种(rand()%1000001)/1000000
都是精确到小数点后6位的。
那假设我不要那么高的精度呢,比如只要3位小数
而且RAND_MAX我的系统里是0x7fff,你的32767是不是都过时了啊
现在不都是4位了
0x7fff就是32767嘛。。。十六进制和十进制。你是觉得第二种方法容易取精度吧。我个人感觉取整操作使得概率有细微的不平均。比如骰子6个数平均出现,现在要0~4范围,/5取整对吧。然后0~4的概率就变成1:2:1:1:1
1=》1
2=》2
3=》3
4=》4
5=》0
6=》1
1出现2次。。当然在32767里面他的影响很小。
我说错了是0x7FFFFFFF,4位的
32767是2位的,不过现在都4位了吧
我个人觉得第二种好些吧
不过仔细研究确实不是绝对的随机,有一些数概率大一点点
道理你也明白,编程都在咱们自己,想怎么写就怎么写是吧。我查了确实是32767。应该是老C库的定义。以你自己的编译器为准