Java中使用随机运算符创建最小值
我需要生成一个介于最小值和1->[min,1]之间的随机数 我一直在阅读java的random类,发现当生成一个随机双精度时,结果是一个从0到1.0的双精度,但是,不能限制界限 我最初的想法是将随机函数的最大值限制为.7,但这在随机函数中是不可能的 如果有人能帮我,这是我的代码:Java中使用随机运算符创建最小值,java,algorithm,random,Java,Algorithm,Random,我需要生成一个介于最小值和1->[min,1]之间的随机数 我一直在阅读java的random类,发现当生成一个随机双精度时,结果是一个从0到1.0的双精度,但是,不能限制界限 我最初的想法是将随机函数的最大值限制为.7,但这在随机函数中是不可能的 如果有人能帮我,这是我的代码: public static double random(){ // generate an random number accuracy within range [min, 1) Ra
public static double random(){
// generate an random number accuracy within range [min, 1)
Random randomNum = new Random();
double accuracy = min + randomNum.nextDouble();
System.out.println("Min " + min);
return accuracy;
}
例如,在这种情况下,如果我们将min设为.2,那么我所理解的函数的可能结果是.2到1.2。我如何简单地将其设为.2到1?如果我错了,请纠正我,但这行得通吗:
/**
* A double uniformly distributed in the range [min, max).
* @param min finite and inclusive.
* @param max finite, > min, and exclusive.
* @return d such that min <= d && d < max.
*/
public static boolean uniformInRange(double min, double max, Random r) {
assert min < max && !Double.isInfinite(min) && !Double.isInfinite(max);
return min + (r.nextDouble() * (max - min));
}
public static double random(int min, int max){
Random randomNum = new Random();
return (max - min) * randomNum.nextDouble() + min;
}
说明:
返回(max-min)
和max
之间的差值min
返回介于randomNum.nextDouble()
和0
1
将添加+min
值,因此它是最低值min
返回介于(max-min)*randomNum.nextDouble()
和0
max-min
返回介于(max-min)*randomNum.nextDouble()+min
和min
之间的随机数max
public static double random(int min, int max){
Random randomNum = new Random();
return (max - min) * randomNum.nextDouble() + min;
}
说明:
返回(max-min)
和max
之间的差值min
返回介于randomNum.nextDouble()
和0
1
将添加+min
值,因此它是最低值min
返回介于(max-min)*randomNum.nextDouble()
和0
max-min
返回介于(max-min)*randomNum.nextDouble()+min
和min
之间的随机数max
- 像这样的东西怎么样
double min = .2;
Random gen = new Random();
double rand = (gen.nextDouble() * 0.8) + min;
在这里,您将在末尾添加最小界限,并将您的0-1比率乘以0.8,这是0.2和1之间的差值。类似的情况如何
double min = .2;
Random gen = new Random();
double rand = (gen.nextDouble() * 0.8) + min;
在这里,您将在末尾添加最小界限,并将您的0-1比率乘以0.8,这是0.2和1之间的差值。前面的名称更清楚,imho,
uniformInRange
没有说它是随机的。(ps:您将进行多少次编辑,我已经计算了10:p)@WoLpH,我认为签名中的Random
清楚地表明这是一个随机数,除非你深入研究Javadoc,否则“uniform”一词就不存在了。在编辑时,是的,我非常不擅长看我的代码,然后注意到还有一件事需要调整:)@WoLpH它实际上没有说任何东西,“uniform”对于任何接受过统计的人来说,这应该是一个很好的指标,特别是在随机数的情况下。(例如,由包含的包/类名指示。或者由正在回答的问题指示。)@millimoose:你说的“统一”是对的在本文中非常清楚,但当我在自动完成列表中查找random
函数时,我会首先键入random
;)@WoLpH,我认为我们在讨论API设计时忽略了一个部分:它出现的类。如果您在random
类或子类中工作,则前缀“random”将不会显示任何方法,但类名将提供缺少的上下文。如果我要构建一个完整的库,我将尝试使用可搜索的类名,同时尽量避免使用“random”之类的词,这可能导致对“pseudo-random”与“true-random”的错误假设。前面的名字更清楚了,伊姆豪,uniformInRange
没有说它是随机的。(ps:你要做多少次编辑,我已经数了10次了:P)@WoLpH,我想签名中的random
清楚地表明这是一个随机数,还有“uniform”这个词在编辑方面,是的,我非常不擅长看我的代码,然后注意到还有一件事需要调整:)@WoLpH It's实际上什么都没有说,“uniform”应该是任何接受统计的人的一个好指标,特别是在随机数的情况下。(例如,由包含的包/类名指示。或者由正在回答的问题指示。)@millimoose:你是对的,在这个上下文中“统一”是非常清楚的,但是当我只是在自动完成列表中查找random
函数时,我会先键入random
;)@WoLpH,我认为我们在讨论API设计时忽略了一个部分:它出现的类。如果您在Random
类或子类中工作,那么前缀“Random”将不会出现任何方法,但类名将提供缺少的上下文。如果我要构建一个完整的库,我会尝试使用可搜索的类名,同时尽量避免使用“random”之类的词,这可能会导致对“pseudo-random”与“true-random”的错误假设。