我正在Android工作室制作一个应用程序,它会创建一系列随机数,然后使用它们来制作用户应答的等式。
我遇到的问题是,在正确选择并按下按钮生成新等式后,程序会使用第一次随机化的相同数字。
我尝试过的事情:将数组放在方法之外,在课堂下。
同时使用Math.random
和Random rng = new Random()
。
确保使用System.out.println
多次启动该方法。
我也尝试过Eclipse中的代码,它的工作方式应该如此。
我的代码中的随机用户:
public void SkapaUppgift() {
System.out.println(test);
test=test+1;
for (int i = 0; i < tal.length; i++) {
Random rng= new Random();
tal[i] = (int) (Math.random() * ((200 - 0) + 1) + 0);
//tal[i] = rng.nextInt(200);
}
}
编辑:澄清。我已经使用了随机rng AND math.random,并且两者都被指定为0到200之间的范围。问题是每次调用该方法时,都会拉出相同的随机数。例如:我启动应用程序并获得数字20,25,200和3.下次我调用方法时,我得到20,25,200和3.第三次得到20,25,200和3。如果我关闭应用程序并再次启动它,我会得到4个不同的数字。我想在每次调用方法时获得不同的数字,而不仅仅是在我重新启动应用程序时。
答案 0 :(得分:2)
您正在创建新的Random
实例,但未使用它。尝试使用rng.nextInt()
代替Math.random()
。
这不起作用的原因是因为Math.random()
返回0(包括)和1(不包括)之间的随机双精度,但是它被向下转换为int,因此被截断,留下你的只有一种可能的结果。
编辑:在这种情况下,您需要包含更多代码。这是从哪里调用的?打印结果在哪里?我觉得这种方法工作正常,你实际上每次只打印相同的数组。
请记住,Java中的对象是按值传递的,而不是通过引用传递的。
答案 1 :(得分:0)
你应该从rng.nextInt()获得你想要的结果。您只需要确保只创建一次并在之后永远使用相同的实例。换句话说,让它成为单身人士。