2016-08-19 78 views
-1

C一样,我们有srand(time(NULL)))以确保在下一次呼叫时生成的随机数将不同于为当前呼叫生成的随机数。为java中的每个连续迭代生成不同的随机数。

我试过的是这个。

Random r=new Random(); 
for(int i=0;i<100;i++) 
{ 
System.out.println(r.nextInt(1000)); 
} 

但它可以打印similat在连续迭代次数。

我希望它应该在连续的迭代中打印不同的数字。

是否有任何预定义的方法来实现这一目标?

+0

“Random”的第一个参数是种子。还有'setSeed'功能。 [文档](https://docs.oracle.com/javase/7/docs/api/java/util/Random.html) –

+0

您希望多次执行您的代码以打印未打印的不同数字以前的迭代。不可能将类中的随机变量作为静态成员移动? – Slimu

+2

'新Random()'已经像'srand(time(NULL))一样工作' – ByeBye

回答

1
Random r=new Random(); 
int newNumber; 
int oldNumber = -1; //Will never be matching the random number. 
for(int i=0;i<100;i++){ 
    do{ 
     newNumber = r.nextInt(1000); 
    } while (newNumber == oldNumber); 
    System.out.println(newNumber)); 
    oldNumber = newNumber; 
} 

本质上,它将要打印的潜在号码与打印的最后一个号码进行比较,如果它们相同,则重新输入潜在号码。这需要多少次才能获得不同的连续数字。

+1

newNumber ** == ** oldNumber,not = – noscreenname

+0

该死的,赶上!编辑。 – Matt