簡體   English   中英

你如何使用 math.random 生成隨機整數?

[英]How do you use math.random to generate random ints?

你如何使用 Math.random 生成隨機整數?

我的代碼是:

int abc= (Math.random()*100);
System.out.println(abc);

它打印出來的都是0,我該如何解決這個問題?

將 abc 轉換為整數。

(int)(Math.random()*100);

要編譯您的代碼,您需要將結果轉換為 int。

int abc = (int) (Math.random() * 100);

但是,如果您改為使用java.util.Random類,它已為您內置方法

Random random = new Random();
int abc = random.nextInt(100);

作為替代方案,如果沒有使用Math.random()的特定原因,請使用Random.nextInt()

import java.util.Random;

Random rnd = new Random();
int abc = rnd.nextInt(100); // +1 if you want 1-100, otherwise will be 0-99.
int abc= (Math.random()*100);//  wrong 

您將收到以下錯誤消息

線程“main”中的異常java.lang.Error:未解決的編譯問題:類型不匹配:無法從double轉換為int

int abc= (int) (Math.random()*100);// add "(int)" data type

,稱為類型轉換

如果真正的結果是

int abc= (int) (Math.random()*1)=0.027475

然后您將得到輸出為“0”,因為它是整數數據類型。

int abc= (int) (Math.random()*100)=0.02745

輸出:2 因為(100*0.02745=2.7456...等)

您正在導入java.util包。 這就是為什么它給出錯誤。 java.util包中也有一個random() 請刪除導入java.util包的 import 語句。 那么你的程序將默認使用java.langrandom()方法,然后你的程序就可以工作了。 記得投它即

int x = (int)(Math.random()*100);

您還可以使用這種方式獲取 1 到 100 之間的隨機數,如下所示:

SecureRandom src=new SecureRandom();
int random=1 + src.nextInt(100);
double  i = 2+Math.random()*100;
int j = (int)i;
System.out.print(j);

暫無
暫無

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

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