我需要一個隨機數生成算法,爲特定輸入生成一個隨機數。但是每次獲得相同的輸入時它會生成相同的數字。如果這種算法可以在互聯網上或我必須建立一個。如果存在,任何人都知道,請讓我知道。 (C,C++,JAVA,C#或任何僞代碼將有很大幫助)隨機數的生成
在此先感謝。
我需要一個隨機數生成算法,爲特定輸入生成一個隨機數。但是每次獲得相同的輸入時它會生成相同的數字。如果這種算法可以在互聯網上或我必須建立一個。如果存在,任何人都知道,請讓我知道。 (C,C++,JAVA,C#或任何僞代碼將有很大幫助)隨機數的生成
在此先感謝。
通常標準實施的隨機數生成器取決於種子值。 您可以使用標準隨機,將種子值設置爲您輸入的一些哈希函數。
C#例如:
string input = "Foo";
Random rnd = new Random(input.GetHashCode());
int random = rnd.Next();
Mersenne Twister算法是一個很好的可預測隨機數發生器。大多數語言都有實現。
所有的僞隨機數發生器(這是計算機上的大多數是隨機數發生器)將生成的數字從開始的投入,種子相同的序列。因此,您可以使用您選擇的編程語言提供的任何RNG。
鑑於你想從一個給定的種子中抽取一個樣本,我會避開Mersenne Twister和其他具有良好統計特性的複雜RNG,因爲你不需要它。你可以使用一個簡單的LCG,或者你可以使用像MD5這樣的散列函數。 LCG的一個問題是,對於一個小種子來說,下一個值通常在同一個區域,因爲模數不適用,所以如果你的輸入值通常很小,我會使用MD5。
謝謝。我投票給你。 – FlintOff 2009-11-23 14:59:09
http://en.wikipedia.org/wiki/Pseudorandom_number_generator – pingw33n 2009-11-23 14:38:40
你想要一個隨機數序列或單個哈希碼作爲輸入嗎? – starblue 2009-11-23 14:50:10