看板 ask-why 關於我們 聯絡資訊
※ 引述《HuangJC (吹笛牧童)》之銘言: [deleted] : 當然,大部份時候,這樣設計程式都叫想太多 : 我們很簡單的把原始亂數除到變成 0~1 的浮點數再乘開就好了 : 沒有人會知道其實他天生中獎率就比別人低了 : 只怪他命不好 :P : 不好意思,也有黑心程式 XD 我大概了解了你的意思 然而隨著 random number 的值域愈大 你所說的機率偏差也會隨之縮小 一般程式設計師並不會拿 0.0~0.9 僅有十種變化的 random variable 直接拿去乘 9.0 再做個 floor() 然後就說這是個 0~8 之間的 uniform random integer 若你的原始亂數是 0.000 ~ 0.999 有 1000 種可能 那麼經過運算後 出現 0 的機率僅比出現其它數字的機率大了 0.001 若你的原始亂數是小於 1.0 的 IEEE754 single-precision floating point 機率偏差為 2^-23 這個數字...八百萬分之一 說實話已經很小了 浮點運算誤差造成的影響還比較大 如果不滿意,你還可以改用 double -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.217.30.156 ※ 編輯: littleshan 來自: 61.217.30.156 (05/20 23:55)
HuangJC:不只 R=0 那兒會重覆,事實上有可能出現週期性的重覆 05/21 00:47
HuangJC:比如要把原本三個值塞進兩個值裏,那麼兩個值中就有一個是 05/21 00:47
HuangJC:另一個的兩倍機率;然後週期性的畫成條紋圖了.. 05/21 00:48