自己寫一個也可以,這是 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 可以用時間轉換成長整數來餵進這個公式。

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

應該說,我們中的許多人,編程的歷史並不短,但很多時候,我們對自己編寫出來的代碼卻毫無自信,有時候自己見了都怕,儘管這段代碼實現了要求的功能。歸其原因,往往是代碼風格差導致的代碼凌亂沒有美感,本文的目的就是要講解一般的良好風格,幫助讀者寫出「美麗」的代碼,事先要說明的是文中所涉及到的語言有 C、C++、JAVA及BASIC,我之所以用了三種語言而不是只用一種語言是為了向讀者表明風格對語言的通用的。

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