我想生成一個隨機數類型short,就像有一個名爲Random.nextInt(134116)的整型函數一樣。我怎樣才能實現它?在java中產生短的隨機數?
回答
沒有Random.nextShort()
方法,所以你可以使用
short s = (short) Random.nextInt(Short.MAX_VALUE + 1);
+1是因爲該方法返回一個數達到規定數量(不包括)。見here
從0到Short.MAX_VALUE包容這將生成的數字(負數不是由OP請求)
並且需要演員。 – 2012-04-17 10:00:58
謝謝@juergend,我已更新答案 – luketorjussen 2012-04-17 10:01:41
但是,如果您添加1,您將無法生成0? – Tudor 2012-04-17 10:02:20
short s = (short) Random.nextInt();
怎麼樣?請注意,由此產生的分配可能有偏差。 Java語言規範保證這不會導致一個異常,這個int將被截斷以適合短小的內容。
編輯
實際上做一個快速的測試,得到的分佈似乎是均勻分佈了。
如果生成的數字大於短於? – luketorjussen 2012-04-17 10:02:09
只保留最後四位,但不會產生溢出。 – assylias 2012-04-17 10:03:18
但它會改變生成的隨機數的微調均勻性嗎? – 2012-04-17 10:13:19
爪哇短褲包括在-32 768→32 767間隔。
你爲什麼不執行
Random.nextInt(65536) - 32768
並將結果轉換成短變量?
+1 - 我正準備寫那個。 – Deco 2012-04-17 10:06:28
我想它,併爲你寫,所以你會延長鍵盤的使用壽命。 – 2012-04-17 10:12:47
只需產生像int:
short s = (short)Random.nextInt(Short.MAX_VALUE);
生成int
將在short
值空間,因此它可以在不丟失數據被鑄造。
這將產生非負的短價值,除了Short.MAX_VALUE – 2012-04-17 10:14:21
可以產生所有可能的短值的最有效的解決方案是做。
short s = (short) random.nextInt(1 << 16); // any short
short s = (short) random.nextInt(1 << 15); // any non-negative short
甚至更快
class MyRandom extends Random {
public short nextShort() {
return (short) next(16); // give me just 16 bits.
}
public short nextNonNegativeShort() {
return (short) next(15); // give me just 15 bits.
}
}
short s = myRandom.nextShort();
確實做得很好。 – assylias 2012-04-17 10:23:02
- 1. 隨機數產生
- 2. 隨機數產生
- 3. UUID隨機數的產生
- 4. 隨機種子來產生隨機數
- 5. 在java中不產生重複對的隨機數對
- 6. 隨機數發生器產生相同的隨機數
- 7. 必須產生隨機數
- 8. [R data.table:產生隨機數
- 9. CUDA隨機數產生
- 10. 隨機路徑產生 - Java的
- 11. 問題中產生的隨機數
- 12. 如何從短隨機數生成更長的隨機數?
- 13. 在java中產生一對隨機數,使得p!= q
- 14. 隨機產生在Haskell
- 15. java只產生隨機「淺色」顏色
- 16. Java產生隨機玩家對
- 17. 在PHP陣列產生隨機數
- 18. java:在循環中生成隨機數
- 19. 如何在java中生成隨機數
- 20. 在java中生成隨機數
- 21. 隨機數發生器產生重複
- 22. 在很短的時間間隔內產生大量的隨機數(C++)
- 23. Java隨機數發生器
- 24. 在遊戲中隨機產生物體
- 25. 產生不均勻的僞隨機數
- 26. 隨機數的產生和使用random.seed()
- 27. 產生可預測的隨機數C#
- 28. 產生兩個不同的隨機數
- 29. 每次產生相同的隨機數
- 30. 產生的隨機數總是相等
你需要負數? – luketorjussen 2012-04-17 10:06:11
no luke我不需要負數只能從0到最大短缺 – waqas 2012-04-17 10:11:53