随机数生成器在Android上生成相同的数字

时间:2014-08-05 20:11:15

标签: java android random libgdx

我最近开始学习编程移动应用程序。 我正在做一些练习,编写基本程序。 首先我使用LibGDX,所以首先我在桌面上测试我的应用程序然后在android上测试它。

在我的程序中,它必须从0,1,2生成3个随机数(只要它们是随机的,它们可以是相同的数字)。在桌面上我的程序运行正常,每次运行它时会生成3个随机数。但是,当我在我的Android手机上试用它时,所有三个数字都是相同的。 例如3个试验: 我的桌面:0-0-1,2-1-2,2-0-1 我的手机; 0-0-0,2-2-2,0-0-0;

for (int x = 0; x < 3; x++){
  Random randomGenerator = new Random();
  int randomNumber = randomGenerator.nextInt(3);
  postNumber(randomNumber);//This function I wrote sends the randomNumber to be drawn on the screen

}

1 个答案:

答案 0 :(得分:8)

您应该在您的循环外部初始化<{1}}实例 - 或理想情况下,只需一次。 (documentation表示它是线程安全的,因此您不需要每个线程或类似的东西。)

基本上,它根据当前时间播种Random()的新实例...并且当前时间在循环的迭代之间没有显着变化。这是一个常见的错误,Oracle Java实现在不久前修复了它 - 看起来Android实现还没有。但从根本上说,这是你自己制作的一个问题,而且通过使用Random的单个实例来生成你的所有数字,这绝对是可以避免的。