作者liwmewmew (如果大海能够)
看板C_and_CPP
标题[问题] 消失的乱数
时间Thu Sep 24 14:13:53 2009
小弟最近在研究乱数
想取[0, 1]之间的任一浮点数乱数 (包括0与1)
所以写出了 rand()/(float)RAND_MAX 这样的语法
结果发现,因为分母是奇数(32767),所以绝对取不到0.5这个乱数
所以试着把分母变为偶数 rand()/(float)(RAND_MAX+1)
但发现这样取不到1.0这个乱数
又如果改成 (rand()+1)/(float)(RAND_MAX+1)
那可以想像会取不到0.0这个乱数
如果我把分母乘两倍(一个偶数) rand()/(float)RAND_MAX*2
最後只要我敢把偶数乘数也乘到rand()上 ,那我的乱数就会分布不均的样子
(rand()/(float)RAND_MAX*2)*2
不知道有没有大大有什麽建议的
真的非常谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.22.18.83
1F:推 snowlike:到小数点後第三位 rand()%1001/1000 09/24 14:25
2F:推 ledia:这告诉我们有理数是很松散的 (?) XD 09/24 14:42
3F:→ jlovet:零到一之间的浮点数,少掉的可多着呢 09/24 15:16
4F:推 cplusplus:自己填double里面的bit怎麽样? 09/24 18:28
5F:推 cspy:要够乱 抓sec丢进去一个SEED然後srand产生 rand产生的不够乱 09/25 00:51
6F:→ cspy:RAND产生的乱数 频率是一样的 09/25 00:52