我需要为彩票游戏生成随机数字,彩票前端将在闪光AS3的想法是运行一个脚本,生成10个随机数字(中奖者),并将它们保存在SQL数据库中
创建随机数的可靠方法是什么?对于彩票来说,js Math.rand()函数足够可靠吗?
在维基百科上,我发现Fortuna是一个“密码安全的伪随机数生成器”,它包含在Javascript Crypto库中。
另一个选择是网站http://www.random.org,它提供了一个免费的API来提供随机数字,但它能提供什么保证呢?
发布于 2011-03-30 17:34:50
似乎random.org的数字是基于静态噪声,这是相当随机的,比javascript随机库更随机,后者可能是基于某种时间算法的随机性。
发布于 2011-03-30 17:36:50
javascript Math.rand()对于彩票来说不太可能足够好,因为规范并不要求它是密码安全的。例如,在一些版本的Chrome中使用的生成器中就有known weaknesses。
您需要的是一个加密安全的伪随机数生成器(比如blum-blum-shub),以及一种播种它的方式。你需要一个很好的播种方式,因为如果有人知道你用的是什么种子,他们就能生成所有的彩票号码。您可能希望在伪随机生成器中植入一个真正的随机数,而不是伪随机数。这将需要一个硬件随机数生成器。据推测,random.org提供了一个真正的随机数来源,然而,如果有人窃听你与Random.org的连接,他们仍然可以发现你的随机种子。你可能更喜欢投资于你自己的硬件,而不是依赖外部的人。
事实上,除非您需要大量的随机数(远远超过10),否则使用任何伪随机数生成器都没有什么意义。你最好从一个真正的,硬件的,随机数生成器中获得你所有的随机数。
发布于 2011-03-30 17:30:44
如果彩票涉及金钱(购买“彩票”和支付奖金),那么您可能需要能够证明您使用的是“真实”随机数。在这种情况下,您可能希望投资于自己的硬件来生成随机数。一个快速的search显示了一些,例如this one。
否则,这两个伪随机源中的任何一个对我来说都是足够的。
https://stackoverflow.com/questions/5484396
复制相似问题