看板 C_and_CPP 關於我們 聯絡資訊
小弟最近在研究亂數 想取[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
snowlike:到小數點後第三位 rand()%1001/1000 09/24 14:25
ledia:這告訴我們有理數是很鬆散的 (?) XD 09/24 14:42
jlovet:零到一之間的浮點數,少掉的可多著呢 09/24 15:16
cplusplus:自己填double裡面的bit怎麼樣? 09/24 18:28
cspy:要夠亂 抓sec丟進去一個SEED然後srand產生 rand產生的不夠亂 09/25 00:51
cspy:RAND產生的亂數 頻率是一樣的 09/25 00:52