2014-03-28 78 views
0

这是我的代码,我不断收到输出是:随机数发生器总是在for循环中生成相同的数字?

Number is:54 
Number is:54 
. 
. 
. 
Number is:54 
Number is:54 
Number is:54 
Number is:54 
Process completed. 

代码:

import java.util.Random; 

public class random { 

    private static Random call = new Random(); 
    private static int numb = call.nextInt(75) + 1; 

    public static void main(String[] args) { 

     for(int i = 0; i < 50; i++){ 
      if (numb < 16) { 
       System.out.println("Number is:" + numb); 
      } else if (numb < 31 && numb > 15) { 
       System.out.println("Number is:" + numb); 
      } else if (numb < 46 && numb > 30) { 
       System.out.println("Number is:" + numb); 
      } else if (numb < 61 && numb > 45) { 
       System.out.println("Number is:" + numb); 
      } else { 
       System.out.println("Number is:" + numb); 
      } 
     } 
    }  
} 

是有办法解决的代码没有把

private static Random call = new Random(); 
private static int numb = call.nextInt(75) + 1; 

在主要代码? (表示没有创建new Random()及其在主代码中生成的数字)

原因是我还需要将int“麻木”传递给其他类,它们必须是相同的参数。如果我只是坚持 numb = call.nextInt(75)+ 1; 在主类的for循环中。当然它会起作用,但是“麻木”的参数在每一个班级都会有所不同。

谢谢!

回答

4

只要坚持:

numb = call.nextInt(75) + 1; 

到您的for循环。它将重用已经创建的静态随机。

+0

只是要小心,每个线程使用不同的随机实例或你可能会发现你的随机数是...少一些。 – sirbrialliance

+0

@sirbrialliance。我明白了,谢谢。但我还需要我创建其他类“发麻”,并且它必须是相同的数作为“发麻”在主类,如果我添加麻木= call.nextInt(75)+ 1;在主类的for循环中,两个“麻木”会有所不同,我如何使它们相同? – HayleyL

+0

@Wil哈通感谢您的帮助,但我应该做的,如果我需要其他类的麻木价值? – HayleyL

相关问题