2011-03-30 86 views
4

我需要爲彩票遊戲生成隨機數 彩票前端將工作在閃存AS3的想法是運行一個腳本,產生10個隨機數(贏家),並保存它們在SQL數據庫中在線彩票的可靠隨機數

什麼是創建隨機數的可靠方法? js Math.rand()函數對於抽獎來說足夠可靠嗎?

在wikipedia上,我發現Fortuna是一個「密碼安全的僞隨機數生成器」,它包含在Javascript Crypto Library中。

另一種選擇是網站http://www.random.org,它提供了一個免費的API來提供隨機數字,但它可以提供什麼保證?

+0

重複更多(隨機)時間比我可以計數.... – 2011-03-30 09:38:44

+0

http://www.idquantique.com/true-random-number-generator/products-overview.html – 2011-03-30 09:39:28

+1

http://stackoverflow.com/問題/ 658622 /真不是僞隨機數生成器,什麼出,有 – 2011-03-30 09:39:56

回答

1

如果彩票涉及金錢(購買「門票」和支付獎金),那麼您可能需要證明您使用的是「真實」隨機數。在這種情況下,您可能需要投資自己的硬件來生成隨機數。快速search揭示了一些,例如this之一。

否則,兩個僞隨機源之一對我來說似乎就足夠了。

2

random.org似乎是基於靜態噪聲的數字,這是非常隨機的,比JavaScript隨機庫更隨機,它可能是基於某種時間算法的隨機性。

2

javascript Math.rand()對於抽獎來說不太可能足夠好,因爲規範並不要求它是加密安全的。例如,某些版本的Chrome中使用的生成器中有known weaknesses

你需要的將是一個密碼安全的僞隨機數發生器(如blum-blum-shub),以及播種方式。你需要一個很好的種子播種方式,因爲如果任何人都能弄清楚你使用了什麼種子,他們將能夠生成所有的彩票號碼。您可能想要用真正隨機的而非僞隨機數對僞隨機生成器進行播種。這將需要一個硬件隨機數發生器。 Random.org據說提供了一個真正的隨機數字源,但是如果有人要竊聽你與random.org的連接,他們仍然可以發現你的隨機種子。您可能更願意投資自己的硬件,而不是依靠外部人員。事實上,除非你需要大量的隨機數(遠遠超過10),否則使用任何僞隨機數發生器都沒有意義。你也可以從一個真正的隨機數發生器中獲得所有的隨機數。