2016-03-24 103 views
0

我在使用隨機數生成器時遇到問題,或者無法完全理解概念。我想從0到x生成20個隨機數。使用隨機數生成器Java

Random ranNum= new Random(); 
int n = ranNum.nextInt(x) + 0; 

這是我該怎麼辦呢?

+0

1)看起來像Java,是否正確?如果是這樣,請將其添加到您的代碼中。 2)你想要結果是包容還是排除'x'? 3)你認爲通過加零來完成什麼? 4)你有沒有試過你建議的?如果沒有,爲什麼不,如果是的話,那你不希望看到什麼? – pjs

+0

對不起,上限是包含的 – cargoboom

+0

我真的不知道爲什麼我加了零,我在我的程序中試了一下,我寫的真的沒有工作。 – cargoboom

回答

1

下面創建值的ArrayList 0和x之間,包容性,假設x先前已被定義爲積極的int

ArrayList<Integer> randNums = new ArrayList<Integer>(); 
Random r = new Random(); 
for(int i = 0; i < 20; ++i) { 
    randNums.add(r.nextInt(x + 1)); 
} 

然後,您可以通過ArrayList迭代使用,但是你希望的值(印刷或後續計算)。

0

運行該代碼:

int x=100,n=0; 
Random ranNum= new Random(); 
for(int i=0;i<20;i++) 
{ 
    n = ranNum.nextInt(x); 
    System.out.println(n); 
} 

X是隨機數的範圍內。這個計劃產生於100.If 0之間的隨機數,要指定一個最小值比你可以嘗試在循環中這一行:

n = ranNum.nextInt(x-min)+min; 
0

我喜歡的Math.random(),則返回一個包含一個雙精度值正號,大於或等於0.0且小於1.0。

public int getNumber(int max) { 
    return (int) (Math.random() * max); //returns an int between 0 and max 
} 

public void main() { 
    for(int i = 0; i < 20; i++) { 
     System.out.println(getNumber(100)); 
    } 
} 

打印20個0和100之間的數字約的Math.random()更多https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html

+0

你的第一個陳述是錯誤的,就像你的'getNumber'方法中的註釋一樣。 'Math.random()'的上限不是0.9,乘以'max'並且轉換爲'int'永遠不會產生'max'。 – pjs

+0

是的。如果您需要1-10之間的數字,則使用(Math.random()* 10)+ 1.如果您想要0-9之間的數字,請使用(Math.random()* 10),如果您想要0-10之間的數字,使用(Math.random()* 10 + 1)+ 1.其中10是最大值。這就是爲什麼我把它放在一個方法。不知道你想要什麼 –

+0

使用'nextInt'會更好,這就是它的目的。注意*在你的答案*中,根據上限是包含性的還是排他性的,這些事情需要以不同的方式處理,這將使它成爲更好的答案。不要在諸如'Math.random()'「之類的錯誤語句中返回一個介於0.0和0.9之間的雙精度值」是最重要的。 – pjs

0

有了這個,你創建20張隨機數。我仍然不明白你是否想在你的隨機數字中有重複。那麼,試試這個:

static Random r = new Random(); 
private static final int number = 5; 

public static void main(String[] args) { 
    for(int i =0; i<20;i++){ 
     System.out.println(r.nextInt(number)); 
    } 

} 
0

取決於你需要的數字。

要打印出來,你會:

Random randNum = new Random(); 
    for(int x = 0; x < 20; x++){ 
     System.out.println(randNum.nextInt(20)); 
    } 

放在ArrayList和打印出:

ArrayList<Integer> list = new ArrayList<Integer>(); 
    Random randNum = new Random(); 
    for(int x = 0; x < 20; x++){ 
     list.add(randNum.nextInt(x)); //must set x to set maximum number it can be 
    } 
    for(int a : list) 
     System.out.println(a);