返回列表 上一主題 發帖

自己寫 自己的方式產生亂數

自己寫 自己的方式產生亂數

一秒鐘,可以執行督少個 家法的運算?

一秒鐘,可以產生多少個亂數?

餐猜看
天下為公

回復 2# sunnyso


    先解釋,為何要 自己寫

一 自己生的小孩,才可以打

二 從寫作的 過程,可以發現很多問題和 學問

敬請期待
天下為公

TOP

不准 使用 rnd
天下為公

TOP

http://en.wikipedia.org/wiki/Linear_congruential_generator

上面所介紹的是 目前很流行的產生亂數的方法之一
線性同餘。
我習慣使用 Apple Lab. 的係數
R(n)= (R(n-1)*A + B) MOD C

A= 7^5= 16807,
B= 0
C= (2^31) - 1 = 2147483647
天下為公

TOP

回復 9# sunnyso


    OK

等我 11/8 日本回來 再說
天下為公

TOP

回復 11# sunnyso


    integer 的範圍,只有到 +32767, 不行使用

long 的範圍,雖然有到 +2147483647
但是,下一個 亂數,等於 前一個亂數,乘上 a, a= 7^5= 16807
就爆掉了

所以,必須使用 double,

single 的精確度,只有 2^24, 大約是 10^7, 不夠使用
所以,必須使用 double

當然,必須 反覆測試 每一個 細節
天下為公

TOP

比較好的 亂數產生器的 條件
一 產生的計算速度 越快越好

二 亂數的範圍和 個數,越大越好


三 盡可能的 接近均勻分配

四 在產生下一個 相同的亂數之前,要把所有的亂數都跑過一遍


五 循環的週期要 固定

六 循環的 週期要 越大 越好
天下為公

TOP

回復 18# sunnyso


    11/8 回國
這兩天,在台大有授課的 行程
需要 明天 才能 開始
天下為公

TOP

回復 19# sjgau


    http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18
我在 台大ˇ呃 課程介紹網頁
天下為公

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題