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

问题描述 投票:0回答:1

TLDR:我有一个单身人士:

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。我不明白发生了什么或如何修理它。

java android random
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.