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