在java中,人们可以输入随机数:
import java.util.Random;
我正在开发一款游戏,它对我游戏中的随机数发生器至关重要。但它为我快速改变数字,我真的很喜欢它改为新的随机数字。我怎么做?我试图在谷歌搜索但没有给我任何东西。
答案 0 :(得分:2)
我想也许你误解了它是如何运作的。例如,当您拨打random.nextInt(10);
时,它会在每次呼叫时返回不同的号码。它不是“总是在变化”,它会生成一系列数字,并且您可以控制它何时执行此操作。在你提出要求之前,它不会产生新的数字。
如果要在调用nextInt()
等之间保存变量,可以将其分配给变量。
答案 1 :(得分:1)
public class Game {
private Random random = new Random(System.currentTimeMillis());
// Generate all the random numbers you need.
}
如果您按计划需要,请使用Timer
仅在闹钟响起时拨打下一个号码。
答案 2 :(得分:1)
您可以使用Timer
和TimerTask
定期生成随机数,如下所示:
public class MyRandomNumberGenerator extends TimerTask{
int ramdomNumber =0;
Random r = new Random();
@Override
public void run() {
// TODO Auto-generated method stub
randomNumber = r.nextInt(10);
//Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive) here it is 10,
}
public int getRandomNumber(){
return randomNumber;
}
}
现在在你要使用随机数的主类中
使用此代码
MyRandomNumberGenerator rng = new MyRandomNUmberGenerator();
Timer t = new Timer();
t.schedule(rng,System.getCurrentTimeMillis,10000);
int r = rng.getRandomNumber();
此处System.getCurrentTimeMillis
表示从现在起启动计时器,10000
表示每10000
毫秒创建一个新的随机数并存储在实例变量中,然后您可以访问该随机数使用getRandomNumber
类的MyRandomNumberGenerator
方法编号。
答案 3 :(得分:0)
您在Random
对象上调用的方法每次调用时都会返回一个新的随机数。如果那不是您想要的,那么编写自己的类,其中包含Random
的实例,并检查上次您何时调用它来获取新的随机数。如果是新的时间,请返回一个新的。像这样:
class TimedRandom {
private final Random random = new Random();
private int lastNumber;
private long lastRefreshTime;
public int getNumber() {
long now = System.currentTimeMillis();
// If it's more than 2 seconds ago, generate a new random number
if (now - lastRefreshTime > 2000L) {
lastNumber = random.nextInt();
}
lastRefreshTime = now;
return lastNumber;
}
}
答案 4 :(得分:0)
public static void main(String[] args) throws Exception {
Random random = new Random(System.currentTimeMillis());
for (int i = 0; i < 10; i++) {
int number = random.nextInt(10);
System.out.println("number: " + number);
// sleep 1s every generation
TimeUnit.SECONDS.sleep(1);
}
}