→ suhorng: m_white --reinterpret_cast--> float; 對照 ieee 754 吧 05/31 17:03
→ suhorng: 看起來是固定指數, 剩下 random 產生個 random float num 05/31 17:04
→ DJWS: 勾一勾之後發現範圍落在2~4之間 所以減3 05/31 20:08
推 LPH66: 這其實就是我很久之前提過的直接取浮點數亂數的方法 05/31 23:50
→ LPH66: 那 bias 127 之後就變成 128 << 23 == 0x40000000 05/31 23:51
→ LPH66: 這樣就能產生 [2,4) 的均勻隨機浮點數亂數 減 3 得 [-1,1) 05/31 23:53
推 Killercat: 其實不用那麼麻煩啊 boost.Random有幾乎一樣的實作 06/01 08:25
→ Killercat: 他利用的是std::mt19937 有興趣可以看一下 06/01 08:26
→ DJWS: @Killercat mt19937顯然比較麻煩 為何你覺得簡單? 06/01 09:49
→ DJWS: @LPH66 不過這段程式碼有integer overflow 06/01 09:57
→ DJWS: 如果mod某數 那麼就不會是uniform distribution了.... 06/01 09:58
推 Killercat: 不是,我的意思是Boost::Random有利用mt19937的實作 06/01 10:38
→ Killercat: 誒,也許他只能用C...那就當我沒說了囧 剛才想到 06/01 10:39
→ Feis: 蠻有趣的. mod 某未定數之後還能 uniform dist 的怎樣的性質 06/01 10:45
→ DJWS: @Feis 我是說他的LCG會溢位 他忘記mod 06/01 14:36
→ DJWS: 即便他記得mod 也要看他mod什麼 才可能是uniform 06/01 14:39
→ Feis: @DJWS 不曉得您說的是哪個 LCG? 這篇文章的不是 mod 2^32 ? 06/01 14:53
→ DJWS: 如果沒有溢位 可以這樣認為 / 如果已經溢位 是未定義行為 06/02 06:39
→ DJWS: 此例當中 即便他記得補上mod 2^32 依然會溢位 06/02 06:41
→ DJWS: 我搞錯了 剛剛翻了規格書 發現unsigned int不會溢位 06/02 07:24
→ DJWS: 如你所說是mod 2^32沒錯 謝謝 06/02 07:25