Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要在两个值之间生成随机数,忽略给定值_Java_Random - Fatal编程技术网

Java 需要在两个值之间生成随机数,忽略给定值

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 这是为了学位锻炼,所以我必须保持简单 有什么想法吗?

我需要在两个给定值之间使用Math.random()生成随机数,但在这个比较中忽略两个给定值或一个,具体取决于具体情况

这些是要执行的值:

介于-7和0之间,不包括0。
在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的问题是关于双打,不是整数。