2012-06-11 28 views
0

我需要一個軟件或與以下功能抽獎程序環境:抽獎(隨機數發生器)

  • 完全隨機的選擇方法

  • 不使用明確的種子和增量(非預測的方式)

  • 不依賴於第一選擇

  • 隨機數可以基於諸如時間,溫度,互聯網流量,大氣噪聲等環境因素而生成,而不是來自簡單的隨機數學函數。

你能幫我解答嗎?

感謝

+2

你有什麼試過?在這裏和更廣泛的互聯網上有很多關於PRNG的信息。 – Widor

+0

也許你正在尋找一個硬件RNG?http://en.wikipedia.org/wiki/Comparison_of_hardware_random_number_generators – rene

+0

所以你說你想要一個不使用種子的隨機數字生成器,但種子有時間因素嗎? –

回答

2

還有就是要計算方式產生隨機數的方式,它被稱爲乘法與喬治馬爾薩利亞進法。這種方法的優點是它不是基於增量的,也不是以模式播種。相反它有一個隨機的種子。

PS這個應用程序是不是線程安全

http://en.wikipedia.org/wiki/Multiply-with-carry

代碼是從這篇文章:http://en.wikipedia.org/wiki/Random_number_generation#Computational_methods

m_w = <choose-initializer>; /* must not be zero */ 
m_z = <choose-initializer>; /* must not be zero */ 

uint get_random() 
{ 
    m_z = 36969 * (m_z & 65535) + (m_z >> 16); 
    m_w = 18000 * (m_w & 65535) + (m_w >> 16); 
    return (m_z << 16) + m_w; /* 32-bit result */ 
} 
2

如果「幸運大抽獎」你的意思是,你需要一個號碼只有一次一天左右,您可以使用公開訪問的股票市場指數(如納斯達克或S & P 500)的低位數字(包括小數位數字)。您還可以使用其中幾個指數並混合d使用散列函數來獲取單個更大的數字。