你如何使用math.random生成随机整数?

你如何使用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()

 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”中的exceptionjava.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 ……等)

您也可以使用这种方式获取1到100之间的随机数:

 SecureRandom src=new SecureRandom(); int random=1 + src.nextInt(100); 

您正在导入java.util包。 这就是它给出错误的原因。 java.util包中也有一个random() 。 请删除导入java.util包的import语句。 然后你的程序将默认使用java.langrandom()方法然后你的程序将工作。 记得施展它,即

 int x = (int)(Math.random()*100); 
 double i = 2+Math.random()*100; int j = (int)i; System.out.print(j);