我很新的Java和我停留在這一點,我使用的公式:創建一個範圍內的隨機數
min + (int)(Math.random()*(max-min+1))
,我已經寫在指定的隨機整數變量x聲明以下範圍
1 < x <= 8
1爲分鐘,而8是最大我是正確,這將是
1 + (int)(Math.random()*(8-1+1))
?-5 < x <= 3
3爲分鐘和-5是最大,這將是
3 + (int)(Math.radom()*(-5-3+1))
?
任何幫助將不勝感激。
我很新的Java和我停留在這一點,我使用的公式:創建一個範圍內的隨機數
min + (int)(Math.random()*(max-min+1))
,我已經寫在指定的隨機整數變量x聲明以下範圍
1 < x <= 8
1爲分鐘,而8是最大
我是正確,這將是1 + (int)(Math.random()*(8-1+1))
?
-5 < x <= 3
3爲分鐘和-5是最大
,這將是3 + (int)(Math.radom()*(-5-3+1))
?
任何幫助將不勝感激。
您想要一個公式取[0..1)
範圍內的實數,並返回一個範圍爲[1..8]
的整數。
random()
挑選一個實數它的範圍[0..1)
,[0.0 .. 8.0)
得到的值。(int)
回合使用「地板」階躍函數轉換爲(int)
,你有一個整數範圍內[0 .. 7]
,使用以下代碼。它將生成介於0和最大值之間的nos。
Random generator = new Random(); //Creates a new random number generator
for(int i=0; i<100; i++){
/**
*Returns a pseudorandom, uniformly distributed int value
* between 0 (inclusive) and the specified value (exclusive), drawn from
* this random number generator's sequence
*/
System.out.println(generator.nextInt(100));
}
如果使用JDK 1.7版本,那麼你就可以使用一行代碼來實現此功能:
ThreadLocalRandom.current()。nextInt(min,max)+1
如果JDK版本低於1.7,我們可以使用以下方式實現它。
Random random = new Random();
random.nextInt(max - min)+ min +1;
2。獲取與範圍[分鐘隨機值,最大值)
使用, ThreadLocalRandom.current()。nextInt(最小,最大)
或
random.nextInt(最大 - min)+ min;
Math.random()給出了0和1之間的乘積。乘以範圍,範圍的大小,而不是絕對值。如果你想1-10是9,如果你想0-10這是10,如果你想要5-7這是2等。
然後加或減從0到起始值。
如果你想0-9,那麼你就大功告成了(你應該在上一步中都乘以9)
如果你想1-10再加入1
如果你想-5〜 5然後減去5
如果你想要5-7然後做(Math.random()* 2)+5;
你有什麼企圖? – raffian
你有沒有試過用你寫的東西來運行你的代碼? [Math.random](http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#random())給你一個介於0和1之間的隨機數,其餘的應該是easy – zencv
SO的搜索揭示了這是第一次打擊:http://stackoverflow.com/a/363692/791406 – raffian