簡體   English   中英

如果隨機數為負,如何返回0?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM