自己寫一個也可以,這是 197x 年的 paper 提出來的 uniformly distributed
random number generator, 目前我看過幾個 simulation program 都是用這個
方法, 但是最大只能產生2^31 - 1 (亦即 2147483647), 方法如下:

X(n) = X(n-1) * 16807 % 2147483647

也就是這一個 random number 是下一個 random number 的 seed. 在 C 裡面你
要把 seed 存起來下一次用, 通常我們都是用 pointer 來做,比如說:
long seed;//global variable
long temp;//local variable
temp = (*seed * 16807) % 2147483647;
*seed = temp;

Seed 要查表,第一個 seed 我都是用 377003613, 剩下的用這個公式繼續算就可以了。

不知道 wanwan0 的亂數是要用在那裡?如果是要 simulation 用,那 seed
sequence 需要做一些考量,如果只是想要『隨便來個數』,那就不用管了,
seed 可以用時間轉換成長整數來餵進這個公式。

arrow
arrow
    全站熱搜

    pcjustin 發表在 痞客邦 留言(0) 人氣()