Javascript 我如何预测数学随机结果?

Javascript 我如何预测数学随机结果?,javascript,Javascript,鉴于轮盘赌游戏网站csgopolygon.com正在调用Math.random和Math.floor,我如何预测结果?基本上不可能预测Math.random()的结果。如果我们一直追踪这个函数的根,我们会发现自己在C和二进制文件中。因此,除非你有一个永恒的机会,否则我不会把重点放在这件事上。你不能,而且你可能不应该在16岁时染上赌博成瘾症。也就是说,即使可以,该站点也不是使用javascript生成数字,而是使用PHP或ASP等服务器端语言 你的问题目前得分为负,这是一种耻辱。我认为这是一个很好

鉴于轮盘赌游戏网站csgopolygon.com正在调用
Math.random
Math.floor
,我如何预测结果?

基本上不可能预测
Math.random()的结果。如果我们一直追踪这个函数的根,我们会发现自己在C和二进制文件中。因此,除非你有一个永恒的机会,否则我不会把重点放在这件事上。

你不能,而且你可能不应该在16岁时染上赌博成瘾症。也就是说,即使可以,该站点也不是使用javascript生成数字,而是使用PHP或ASP等服务器端语言

你的问题目前得分为负,这是一种耻辱。我认为这是一个很好的问题。追求它,你会在这个过程中学到很多东西

你的直觉是,在理论上,可以预测
数学的结果。random
是正确的。这就是为什么,如果你想建立一个游戏/赌博应用程序,你应该确保使用。如果他们正在使用这样的工具,那就忘了它吧

但是,如果您是正确的,并且他们使用System.time作为Java附带的标准随机生成器的种子,那么可能有一种方法。这将涉及到根据对应于(未来)时间戳的种子生成数百万个数字序列,每个序列中包含数百万个数字,然后观察网站生成的实际随机数字,并尝试在事先生成的数百万个数字中找到特定序列。如果你有匹配的,你就找到了种子。如果你有种子并且知道它们在序列中的位置,你就可以从理论上预测下一个数字

这种方法的问题:

  • 您需要知道他们使用的确切算法,以便确保使用相同的算法
  • 生成所有序列需要巨大的处理能力
  • 存储它们需要大量的存储空间
  • 在存储的序列中搜索观察到的序列需要大量的处理能力
  • 你不了解全部情况。即使你在种子序列中找到了正确的种子和位置,你仍然需要预测你将获得的下一个数字,但由于这是一个多人网站(我猜),他们可能会将该数字提供给其他玩家
  • 在其他答案中,有人说预测数学随机的结果是不可能的。这是不正确的。Math.random实际上是非常可预测的,一旦您知道种子和迭代(自种子设置以来生成了多少个数字)。实际上,我曾经制作过一个生成随机等级的游戏。我搞乱了种子,发现如果我总是设定相同的种子,我总是会得到相同的水平。这很酷,因为我的游戏有无限级,但27级(例如)看起来总是完全一样

    编辑

    好的,我应该事先检查一下网站…:)

  • 他们没有使用Java。查看顶部的“可证明公平”链接。他们讨论了如何通过执行PHP代码来验证过去的卷
  • 这些人很聪明。一旦他们抛弃了旧种子,他们就会出版它。这允许您(使用伪随机数生成器的可预测行为)重新生成所有转鼓,并验证它们从未篡改过转鼓
  • 基本上你想要的是找到目前正在使用的种子。。。然而,我上面提到的第5点仍然成立:你没有完整的图片,那么你如何预测你会得到什么卷?除此之外,找到种子几乎是不可能的。这些家伙懂密码,所以你可以打赌他们使用的是安全的随机数生成器。

    也许这是:


    我怀疑csgopolygon是否使用math.random,但请随意查看。

    您需要了解他们是如何获得种子的,以及他们使用的算法。如果种子来自系统时间,则很难预测。而且它是随机的,所以你不应该去预测它,否则它就不是随机的,或者至少是一个好的随机方法。对那些不喜欢它的人来说:我已经为Java编程15年了,我认为这实际上是一个很好的问题。为什么不花点时间向一个刚起步的年轻开发者i.s.o.解释一些事情呢?我同意,我认为这也是一个很好的问题。这是一个有趣的编程问题,而且从理论的角度来看也很有趣,因为它涉及到随机性的本质。事实上,我在最近的一次求职面试中遇到了一个类似的问题。你可以进入这个网站,看看他们用了什么。Math.random通常是一个非加密安全的伪随机数生成器。可以使用输出来确定伪随机数生成器的内部状态。一旦你掌握了内部状态,你就可以预测未来的所有数字。非常感谢你的评论。非常感谢。所以找到了一个脚本(稍后将链接),但它并不总能预测正确答案。看一看。虽然我说理论上可以为一个不安全的随机化器找到正确的种子和迭代次数,但我认为这实际上是不可能的。另外,“不会总是预测正确答案”在这里基本上被翻译成“坏的”。这是有道理的,因为这实际上是不可能的。您要么拥有正确的(确定性的,例如非安全的)伪随机算法、正确的种子和正确的迭代次数,要么没有。如果你拥有全部,你将能够预测每一个数字。错过一个,你什么都没有。我认为你应该做的是逆转这个过程:尝试构建一个生成随机数的小程序。交换算法,玩种子等等。这会让你更好地理解从外到内看问题。这仍然不能帮助你预测数字,但至少你会明白为什么。我走了