Java 需要在两个值之间生成随机数,忽略给定值
我需要在两个给定值之间使用Math.random()生成随机数,但在这个比较中忽略两个给定值或一个,具体取决于具体情况 这些是要执行的值: 介于-7和0之间,不包括0。Java 需要在两个值之间生成随机数,忽略给定值,java,random,Java,Random,我需要在两个给定值之间使用Math.random()生成随机数,但在这个比较中忽略两个给定值或一个,具体取决于具体情况 这些是要执行的值: 介于-7和0之间,不包括0。 在0和4之间,两个值都被排除。 介于4和5之间,不包括4 我尝试了第一个案例,使用了以下代码: double fv = (-7) + Math.random() * (0 -7); System.out.println(fv); 但它给了我奇怪的声音,比如-13.00123 这是为了学位锻炼,所以我必须保持简单 有什么想法吗?
在0和4之间,两个值都被排除。
介于4和5之间,不包括4 我尝试了第一个案例,使用了以下代码:
double fv = (-7) + Math.random() * (0 -7);
System.out.println(fv);
但它给了我奇怪的声音,比如-13.00123
这是为了学位锻炼,所以我必须保持简单
有什么想法吗?生成一个介于-7和0之间的数字,不包括0
double w=(Math.random()-1)*7;
当随机数=0时,所需值将为-7。但是所需的值却永远不会为0,因为Math.random()
永远不会为1
为其他人
//在0和4之间,两个值都被排除。
double r=Math.random();
双x=(-3*r);//-3
double w=(Math.random()-1)*7;
当随机数=0时,所需值将为-7。但是所需的值却永远不会为0,因为Math.random()
永远不会为1
为其他人
//在0和4之间,两个值都被排除。
double r=Math.random();
双x=(-3*r);//-3Min+(Math.random()*(Max-Min))
(包括下限,不包括上限)。
对于你的数字,正确的方法是
double fv = (-7) + Math.random() * (0 - -7);
由于公式中只使用了一个-
,Min
值假定为7,而不是-7,这会导致错误的结果。范围内随机数的正确公式是Min+(Math.random()*(Max-Min))
(包括下限,不包括上限)。
double fv = (-7) + Math.random() * 7;
System.out.println(fv);
对于你的数字,正确的方法是
double fv = (-7) + Math.random() * (0 - -7);
由于公式中仅使用了一个-
,因此假定Min
值为7,而不是-7,这会导致错误的结果
double fv = (-7) + Math.random() * 7;
System.out.println(fv);
在0.0和1.0(不包括1.0本身)之间创建一个随机双精度。乘以7的假设范围为0到6.99[…]9。减去7会使随机数的范围从-7到0.00[…]01
您可以使用此信息以类似的方式扣除所需随机数的公式
在0.0和1.0(不包括1.0本身)之间创建一个随机双精度。乘以7的假设范围为0到6.99[…]9。减去7会使随机数的范围从-7到0.00[…]01
您可以使用此信息以类似的方式扣除所需随机数的公式。您可以设置枚举以确定包容性
import java.util.concurrent.ThreadLocalRandom;
公共类RandomUtil{
私有枚举包容性{INCLUSIVE,EXCLUSIVE;}
公共静态双随机双(双最小值,双最大值){
返回randomDouble(minValue、maxValue、Inclusivity.INCLUSIVE、Inclusivity.EXCLUSIVE);
}
公共静态双随机双(双最小值、双最大值、包容性最小包含性、包容性最大包含性){
if(最小包容性==包容性.排他性){
最小值+=1;
}
if(最大包容性==包容性.包容性){
最大值+=1;
}
返回ThreadLocalRandom.current().nextDouble(minValue,maxValue);
}
公共静态void main(字符串[]args){
System.out.println(randomDouble(-7,0,Inclusivity.INCLUSIVE,Inclusivity.EXCLUSIVE));//默认值
System.out.println(随机双精度(0,4,Inclusivity.EXCLUSIVE,Inclusivity.EXCLUSIVE));
System.out.println(随机双精度(4,5,Inclusivity.EXCLUSIVE,Inclusivity.INCLUSIVE));
}
}
您可以设置枚举以确定包容性
import java.util.concurrent.ThreadLocalRandom;
公共类RandomUtil{
私有枚举包容性{INCLUSIVE,EXCLUSIVE;}
公共静态双随机双(双最小值,双最大值){
返回randomDouble(minValue、maxValue、Inclusivity.INCLUSIVE、Inclusivity.EXCLUSIVE);
}
公共静态双随机双(双最小值、双最大值、包容性最小包含性、包容性最大包含性){
if(最小包容性==包容性.排他性){
最小值+=1;
}
if(最大包容性==包容性.包容性){
最大值+=1;
}
返回ThreadLocalRandom.current().nextDouble(minValue,maxValue);
}
公共静态void main(字符串[]args){
System.out.println(randomDouble(-7,0,Inclusivity.INCLUSIVE,Inclusivity.EXCLUSIVE));//默认值
System.out.println(随机双精度(0,4,Inclusivity.EXCLUSIVE,Inclusivity.EXCLUSIVE));
System.out.println(随机双精度(4,5,Inclusivity.EXCLUSIVE,Inclusivity.INCLUSIVE));
}
}
试试这个
Random random = new Random();
random.ints(1, -7, 0).forEach(System.out::println);
int()方法中的最后一个值将被排除。请尝试此操作
Random random = new Random();
random.ints(1, -7, 0).forEach(System.out::println);
ints()方法中的最后一个值将被排除。重复此选项是否回答了您的问题?-13.00123有什么奇怪之处?@NashPL这篇文章是关于生成随机整数的。所以。。。独家的,独家的?重复的回答你的问题吗?-13.00123有什么奇怪之处?@NashPL这篇文章是关于生成随机整数的。所以。。。独家,独家?OP的问题是关于双打,不是整数。OP的问题是关于双打,不是整数。