→ MOONRAKER:為啥不用 % ?這方法好迂迴喔 05/16 00:36
→ sosokill:a%10+11這樣不是很簡單= =? 05/16 01:06
→ HeyScng:time函數回從午夜00:00:00起所經過秒數 05/16 01:48
→ HeyScng:因此若要有0.5的變化需耗時 0.5 x ( RAND_MAX+1 )/10秒 05/16 01:49
→ HeyScng:你現在如果再跑一次 應該有變一點點吧XD 05/16 01:50
→ HeyScng:不知道我有沒有說錯? 05/16 01:53
→ ykjiang:sosokill 的寫法,產生的亂數很容易就不平均 05/16 01:56
→ ykjiang:理由有二,讓其他人補充吧,要睡了... 05/16 01:56
推 jlovet:time不是從1970開始的秒數嗎? 又,秒數跟RAND_MAX的關係? 05/16 02:48
→ jlovet:只有 %10 而已應該不會太不平均... 05/16 02:55
推 Fenikso:這code跑起來一點問題都沒有啊 05/16 06:43
→ chin2049:樓上大大 為什麼我用Dev-c++跑 每次結果都一樣 05/16 06:47
→ MOONRAKER:%10+11是會怎樣不平均我倒想知道,yk先生的虛擬亂數值域 05/16 11:22
→ MOONRAKER:是只有0..15嗎? 05/16 11:22
→ ykjiang:學生交交作業沒差,最好不要用於嚴謹的場合 05/16 12:27
推 VictorTom:小弟資質駑鈍, 看不出這樣的寫法和%10+11有什麼差別. 05/16 12:33
→ VictorTom:把rand()的值域展開來看套下去原po式子算感覺是一樣的. 05/16 12:34
→ ykjiang:另一個原因,jlovet 應該知道 :) 05/16 12:35
推 VictorTom:亂數範圍是2, 4, 8, 16, 32這種用low-bits好像還OK.... 05/16 12:37
→ VictorTom:話說新的這個方法前N-1個分布是比較平均, 但最後一個落 05/16 12:38
→ VictorTom:點的機率會比前面N-1個都小一點囉?? 05/16 12:39
→ ykjiang:pseudo random number 很少有每個 bit 都一樣亂的 05/16 12:40
→ ykjiang:這是很現實問題 05/16 12:41
推 VictorTom:以前想過, 如果數學上某一小部份的數比另一大部份的數基 05/16 12:44
→ VictorTom:率不相同, 那取到這小部份的數就捨棄掉重取, 不知可不可 05/16 12:44
→ VictorTom:行....XD 05/16 12:45
→ ykjiang:這樣有作弊的嫌疑,很難弄得好 05/16 12:49
推 VictorTom:這倒是, 我要算0~N的亂數, 還得先找個>N的M, 確定M裡至 05/16 12:54
→ VictorTom:少有N個數的rand()機率相等, 然後去求; 想到就累了Orz 05/16 12:55
→ jlovet:我只知道,現在libc的rand是跟random一樣 05/16 13:30
→ jlovet:period很大,所以lower bit跟higher bit幾乎一樣亂... 05/16 13:30
推 ykjiang:那麼有信心,哪個版本的 libc? 用哪種演算法? 05/16 15:27
→ ykjiang:如果你測試過,覺得夠亂那就好,但並非每種場合都適用 05/16 15:28
→ ykjiang:夠亂不只是夠平均就好喔,要沒明顯的模式或相依性 05/16 15:29
→ ykjiang:這在統計上,有明確的定義... 05/16 15:30
→ ykjiang:一個嚴謹的要求是要任意長度的隨機序列出現的頻率都要一致 05/16 15:34
→ ykjiang:任何嚴謹隨機數應用,最好都測試過,看是否達到需求 05/16 15:37
→ ykjiang:我知道的,很少有演算法產生的隨機數能通過全部檢定的 05/16 15:38
→ ykjiang:通過全部檢定的演算法通常不實用,因為太耗運算了 05/16 15:41