Android SDK Random和SecureRandom返回的值不是那么随机

时间:2019-04-10 11:23:02

标签: java android random

TLDR:我有一个 singleton ,具有:

Random random = new SecureRandom(); // tried with new Random() as well

我使用相同的实例调用 random.nextInt(3),结果如下:2,2,2,0,2,2,2,1,2,2为'2',但不是很多'0'或'1'。会发生什么?

长版:我有一款游戏,敌人随机使用3种技能之一(通过执行 random.nextInt(3)),而他们最终总是使用相同的技能一遍又一遍的技能。在模拟器和手机上都可以。他们很少会使用其他技能。

当然,在测试中执行1000次 random.nextInt(3)调用会返回看似随机的值,但在我的游戏中不会。而且我只实例化了Random / SecureRandom一次,并将其用作单例。

在极少数情况下,情况恰恰相反:0、1、0、0、1、2、1、1、0、1、0、1、1、0、0。我不知道发生了什么或解决方法。

1 个答案:

答案 0 :(得分:0)

编辑: 在这种情况下,您可以尝试使用指定的here使用getInstanceStrong()方法,看看是否会产生所需的结果。从JDK8开始,getInstanceStrong()方法将返回平台上可用的最强大的SecureRandom实现。