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

use*_*414 0 java random android 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

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

您应该在循环初始化Random()实例- 或者理想情况下,只需一次.(文档说它是线程安全的,所以你不需要每个线程或类似的东西.)

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