簡體   English   中英

Java Math.Random()用於一系列數字

[英]Java Math.Random() for series of numbers

是否可以在Java中使用Math.Random()獲得一系列數字,例如10、20、30、40 ...或100、200、300。...我當前的實現是Math.Random()* 3 * 100,因為我認為這將帶給我最多300個可被100整除的數字。

該代碼在第10步返回一個隨機數。0排除在外,但如果要添加它,則在Math.random()行上減去+1。

int step = 10;
int random = (int)(Math.random()*10+1)*step; //10 is the number of possible outcomes
System.out.println("Random with step " + step + ":" random);

Math.random()返回double 您需要一個int值,因此應使用Random類。 無論如何,您可能應該這樣做。

Random rnd = new Random();
int num = (rnd.nextInt(30) + 1) * 10; // 10, 20, 30, ..., 300

說明:

nextInt(30)返回0到29(含)之間的隨機數。
+ 1然后使數字介於1到30之間。
* 10然后得出10, 20, 30, ..., 300

因此,如果您只想要100, 200, 300 ,請使用:

int num = (rnd.nextInt(3) + 1) * 100; // 100, 200, 300

Math.random()文檔指出,調用返回一個

帶正號的double值,大於或等於0.0且小於1.0。

這意味着,計算的結果數在0到300之間,但它不是int類型,而是double類型。 您應該添加對Math.round的調用,或者只是將其強制轉換int並添加一個循環(如果要創建多個值)。

如果要返回數字,例如10、20、30、40、50、60 ...,則應執行以下操作。

int ranNumber=(int)(Math.random()*10+1)*10;
System.out.println(ranNumber);

//sample output: 80

似乎沒有直接的方法可以做到這一點,但是我敢肯定,通過一些操作,我們就能做到。 下面,我創建了randSeries方法來生成基於序列的數字。 您向該方法發送兩個值,一個增量,即您希望序列號基數的大小。 然后是底數,即您的10s,20s,30s。 我們實質上是在您提供的方法范圍內生成一個隨機數,然后將其乘以您發送該方法的基數,以創建一個可以被基數整除的值。

    public int randSeries(int increment, int base){
        Random rand = new Random();

        int range = rand.nextInt(increment)+1; //random number
        System.out.println(range);

        int finalVal = range * base; //turning your random number into a series
        System.out.println(finalVal);

        return finalVal; //return
    }

注意:::此方法可用於生成任何基數的數字,而不僅僅是10。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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