2010-08-27 29 views
3

如果沒有System.Random類,您將如何生成一個隨機數?生成隨機數的算法?不要使用System.Random

是否有任何已知的算法或你們有沒有設計過?

+0

return 4;十五個字符 – Dimitar 2010-08-27 07:01:26

+0

:-)十五個字符 – Faisal 2010-08-27 07:03:25

+1

@Dimitar:http://stackoverflow.com/questions/462219/xkcd-random-number – Rekin 2010-08-27 07:04:08

回答

7

真隨機數只能在計算機「外部」生成,使用放射性計數等。一些威盛處理器有硬件可以這樣做。

Don Knuth計算機編程藝術的第二卷花費了大量的時間從數學背景詳盡地討論各種僞隨機數的實現。推薦閱讀。

+1

+1您無法通過任何編程語言獲得真正的隨機數。 – 2010-08-27 07:04:06

+4

通過任何_deterministic_編程語言。但其實很多不是。例如。創建兩個線程,並讓它們競爭一個互斥體。你以這種方式得到的熵不到一點,但它確實是隨機的。 – MSalters 2010-08-27 08:41:08

1

我們目前的確定性計算機無法真正產生一個真正的隨機數。然而,有許多不同的方法來生成僞隨機數。有關算法的一些信息,請參見Wikipedia上的pseudorandom number generator

1

看看Mersenne Twister。我相信這是System.Random實現的相同算法,它是非常常見的非密碼安全PRNG,具有良好的隨機分佈。

1

像其他答案一樣,它不可能用電腦生成真隨機數,但對於僞隨機,我之前使用的一種算法是Linear Congruential Generator,它的簡單和快速,但我是肯定有更好的選擇。

編輯:語法