M0ε*_*εiπ 2 java random generator
有一些方法可以在java中生成随机数
其中之一是这样的:
Random rand=new Random();
int randomInteger=rand.nextInt();
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:我们可以预测下一个随机数吗?
4个答案后编辑:
我真正的问题是:
我正在开发一个Snake Game(Linux中的半字节),我正在编程蛇移动,现在我想知道是否有可能预测苹果将出现的下一个地方.
可能吗?
如果您确切地知道 ,System.currentTimeMillis在您打电话时会返回什么new Random()new Random()new Random(System.currentTimeMillis())那么您不仅可以预测它,还可以完全了解它.那是因为它是一个快捷方式,用于设置伪随机生成器的种子.(好吧,这就是我上次查看源代码时所做的事情 ;文档实际上并没有说它必须使用它.)如果你知道使用的种子new Random().伪随机生成器是确定性的,如果你知道种子,你就知道序列.更新:查看Java 6源代码[我没有Java 7源代码],默认种子是种子数的组合,在使用时递增,加上System.nanoTime.所以你需要知道这两个.提高标准.
如果您不知道使用的种子的确切值System.currentTimeMillis()何时new Random()发生new Random(),那么确实预测下一个值将是非常困难的.这就是伪随机生成器的重点.我不会说这是不可能的.真的,真的很难做到任何程度的信心.
问题编辑后更新:这是可能的,但非常非常困难,并且在这样做的方式允许玩家提高他们在游戏中的得分,我会说你可以忽略它.