可能重复:
Java:生成范围内的随机数
我想在Java中获得1到50之间的随机值.
我怎么能帮忙Math.random();呢?
如何绑定Math.random()返回的值?
nya*_*nev 712
第一个解决方案是使用java.util.Random类:
import java.util.Random;
Random rand = new Random();
// Obtain a number between [0 - 49].
int n = rand.nextInt(50);
// Add 1 to the result to get a number from the required range
// (i.e., [1 - 50]).
n += 1;
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是Math.random():
double random = Math.random() * 49 + 1;
Run Code Online (Sandbox Code Playgroud)
要么
int random = (int)(Math.random() * 50 + 1);
Run Code Online (Sandbox Code Playgroud)
zen*_*ngr 594
int max = 50;
int min = 1;
Run Code Online (Sandbox Code Playgroud)
double random = Math.random() * 49 + 1;
or
int random = (int )(Math.random() * 50 + 1);
Run Code Online (Sandbox Code Playgroud)
如果是int或1.0(包括)到50.0(不包括),这将给出1到50的值,如果是double
为什么?
random()方法返回一个介于0.0和0.9之间的随机数...,你将它乘以50,所以上限变为0.0到49.999 ...当你加1时,它变成1.0到50.999 ...,现在当你截断对于int,你得到1到50.(感谢评论中的@rup).leepoint对两种方法的精彩记录.
Random rand = new Random();
int value = rand.nextInt(50);
Run Code Online (Sandbox Code Playgroud)
这将给出0到49之间的值.
1至50: rand.nextInt((max - min) + 1) + min;
一些Java随机可怕的来源.