Re: [問題] 消失的亂數
※ 引述《liwmewmew (如果大海能夠)》之銘言:
: 小弟最近在研究亂數
好好研究吧!亂數的用處 非常大。
: 想取[0, 1]之間的任一浮點數亂數 (包括0與1)
不合理!我看到的書,都說 >= 0.0, < 1.0
: 所以寫出了 rand()/(float)RAND_MAX 這樣的語法
: 結果發現,因為分母是奇數(32767),所以絕對取不到0.5這個亂數
這個 不稀奇,對於浮點數來說,電腦所能夠表示的 浮點數
是 離散的,是 不連續的。
很多數都 無法精確表示。
少一個 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
: 不知道有沒有大大有什麼建議的
: 真的非常謝謝
你可以 試著自己寫
R(n)= (R(n-1)*a + b)%c
a, b, c 的變化和 排列組合很多,
例如
a= 7^5, b= 0, c= (2^31) - 1
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.245.110.241
推
09/24 14:49, , 1F
09/24 14:49, 1F
→
09/24 14:50, , 2F
09/24 14:50, 2F
推
09/24 14:50, , 3F
09/24 14:50, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章