我要生成的隨機整數,它是:從最小到最大生成隨機整數?
- 裏面的範圍[最小值,最大值]
inclusive
- 範圍可以是[5,20],[-29,-3]或[ - 13,13](它可以在任何範圍內,積極或消極或之間)
- 代碼採用的是Android
工作正常,我得到了什麼,到目前爲止是這樣的,但它似乎不是消極工作範圍!
1 + (int)(Math.random() * ((Max - Min) + 1));
我要生成的隨機整數,它是:從最小到最大生成隨機整數?
inclusive
工作正常,我得到了什麼,到目前爲止是這樣的,但它似乎不是消極工作範圍!
1 + (int)(Math.random() * ((Max - Min) + 1));
我敢肯定你想
Min+(int)(Math.random()*((Max-Min) + 1));
不過,我要指出的是,範圍[-3,-29]有它的最小和最大逆轉。 (和相同的[5,-13]作爲被Merlyn指出。)
如果你想只是把任意兩個號碼的範圍,a和b然後使用代碼
int Min = Math.min(a,b);
int Max = Math.max(a,b);
這樣你就不必擔心訂單了。這甚至可以用於== b。
試試這個
int min = -100;
int max = 100;
Random rand = new Random();
return rand.nextInt(max - min + 1) + min;
/**
* @param bound1 an inclusive upper or lower bound
* @param bound2 an inclusive lower or upper bound
* @return a uniformly distributed pseudo-random number in the range.
*/
public static int randomInRange(int bound1, int bound2) {
int min = Math.min(bound1, bound2);
int max = Math.max(bound1, bound2);
return min + (int)(Math.random() * (max - min + 1));
}
如果呼叫者可以保證bound1
將小於或等於bound2
比你可以跳過確定最小和最大範圍的步驟;例如
/**
* @param min the inclusive lower bound
* @param max the inclusive upper bound
* @return a uniformly distributed pseudo-random number in the range.
*/
public static int randomInRange(int min, int max) {
return min + (int)(Math.random() * (max - min + 1));
}
我還沒有在Android測試這一點,但它應該是支持符合那些方法標準(星期日)的Java SE規格任何Java或類似Java的平臺上工作。
只需將計算最小和最大 例-30和30 之間的差來獲得: 增量< - 的絕對值(30 - ( - 30)) 然後找到0和delta之間的隨機數。
有與此相關的已經是一個職位。 事後你常分鐘翻譯沿着號線的數量。
如果使用Random類: 1)添加到這裏隨機方程。nextInt(someInt),因爲nextInt返回: someVal < someInt所以您需要確保在函數輸出中包含邊界。
一些關於這些代碼讓我謹慎:
return min +
(int)(Math.random() * (max - min + 1));
}
當鑄造四捨五入雙打轉換爲整數:
int someRandomDoubleRoundedToInteger = (int)(someDouble + 0.5)
是否行得通?這是爲了我的好處,也許其他一些新手會很開心,或者我犯了一個錯誤:
讓我們選擇1和10開始。 選擇一個數字1和10(含)我挑選10名
的Math.random不包含0和1之間,以便0.9999999999999999 *(10 - 1 + 1)= 9.999999999999999鑄造爲int,所以小數產生後吊球關閉一切9,我們添加1〜9 10(使用隨機從東西(1.9至0.999999999999)返回還將生產10
我想選擇1 1和10
之間。在這種情況下,隨機方法把它的最接近零值說出來: 0.00000000000000001 *(10 - 1 + 1)強制轉換爲int 0我們返回1 + 0,這樣就可以工作
嗯,似乎工作。看起來像是對1的非常非常小的偏見,因爲我們從不包括「0」作爲可能性,但它應該是可以接受的。
如果隨機生成器均勻地覆蓋0和1之間的整個區域,則該方法有效。 {0,1}區間之間可以表示多少個不同的數字,它們是均勻間隔的嗎?
我認爲它的工作原理。
你[-3,-29]在錯誤的位置,如果你說[最大,最大], – doNotCheckMyBlog
可能重複的[Java:生成範圍內的隨機數](http://stackoverflow.com/questions/363681/java-generating-random-number-in-a range) –
我沒有投票,但代碼仍然不正確,修正了這個問題。另外,'[5,-13]'也是錯誤的。 –