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。我不知道发生了什么或解决方法。
答案 0 :(得分:0)
编辑:
在这种情况下,您可以尝试使用指定的here使用getInstanceStrong()方法,看看是否会产生所需的结果。从JDK8开始,getInstanceStrong()
方法将返回平台上可用的最强大的SecureRandom实现。