[英]How do I return 0 if random number will be negative?
num1,num2是隨機數的界限,但是如果num1大於num2,我希望結果為0。
int num1 = 5
int num2 = 1
int num3 = 10
Random rand = new Random();
double num = 0;
for (int i = 0; i < num3; i++) {
int randNum = rand.nextInt((num2 - num1) + 1) + num1;
num = num + randNum;
// Adds the random number generated to num until it reaches the
// max amount of numbers generated.
}
num = num / num3;
if (num3 < 1 || num2 < num1){
return 0;
} else {
return num;
}
我以為最后一個if語句會起作用,但是它一直給我一個錯誤,指出隨機數不能為負。
如果解決方案可能有點簡單,因為我只是從Java入手
任何幫助將不勝感激,謝謝
因為(根據Javadocs )
public int nextInt(int n)
參數:n-要返回的隨機數的界限。 必須是積極的 。 返回:下一個偽隨機數,此隨機數生成器的序列在0(含)和n(不含)之間均勻分布的int值拋出: IllegalArgumentException-如果n不為正
返回一個偽隨機數,其int值在0(含)和指定值(不含)之間均勻分布
因此,您需要首先檢查(num2 - num1) > 0
您可以通過先進行num1與num2的比較來簡化它,如果num1更大,則不要搞亂任何數學運算。
將此移到頂部:
if (num3 < 1 || num2 < num1){
return 0;
再次查看代碼,它隨着num3的增加而出現,結果接近(num2-num1)/ 2。 想知道您在這里做什么?
您沒有使用num1和num2作為界限。 如果應該是
randNum = rand.nextInt(num1, num2);
還有你的條件
if(num1 > num2)
應該是您的方法中的第一位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.