繁体   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