[英]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.lang
的random()
方法,然后你的程序就可以工作了。 记得投它即
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.