gpt4 book ai didi

javascript - 我如何预测 Math.random 结果?

转载 作者:数据小太阳 更新时间:2023-10-29 06:00:27 24 4
gpt4 key购买 nike

如果轮盘游戏网站 csgopolygon.com 正在调用 Math.randomMath.floor,我如何预测它的结果?

最佳答案

您认为在理论上可以预测 Math.random 结果的直觉是正确的。这就是为什么,如果你想构建一个游戏/赌博应用程序,你应该确保使用 cryptographically secure pseudo-random number generator .如果他们正在使用这样的东西,那就别管它了。

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

这种方法的问题:

  1. 你需要知道他们使用的确切算法,这样你才能确保你使用的是相同的
  2. 生成所有序列需要大量的处理能力
  3. 存储它们需要大量存储空间
  4. 在存储的序列中搜索观察到的序列需要大量的处理能力
  5. 你没有全貌。即使您在该种子的序列中找到了正确的种子和位置,您仍然需要预测 将获得的下一个数字,但由于这是一个多人网站(我假设),他们可能会给出号码给另一个玩家。

在其他答案中,据说预测 Math.random 的结果是不可能的。这是不正确的。 Math.random 实际上非常可预测,一旦您知道种子和迭代(自设置种子以来生成了多少数字)。实际上,我曾经构建过一个生成随机关卡的游戏。我弄乱了种子,发现如果我总是设置相同的种子,我总是会得到相同的水平。这很酷,因为我的游戏有无限关卡,但第 27 关(例如)看起来总是一模一样。

但是,

  1. 他们没有使用 Java。查看顶部的“Provably Fair”链接。他们讨论了如何通过执行 PHP 代码自行验证过去的滚动。
  2. 这些人很聪明。一旦他们解散旧种子,他们就会发布旧种子。这允许您(使用伪随机数生成器的可预测行为)重新生成所有卷并验证它们从未被篡改。

基本上,您想找到当前正在使用的种子...但是,我上面提到的第 5 点仍然成立:您没有完整的图片,所以您如何预测 会得到什么?除此之外,找到种子几乎是不可能的。这些人了解密码学,所以您可以打赌他们使用的是安全的随机数生成器。

关于javascript - 我如何预测 Math.random 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39922141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com