Java 生成从最小值到最大值的随机整数?
我想生成一个随机整数,即:Java 生成从最小值到最大值的随机整数?,java,android,random,Java,Android,Random,我想生成一个随机整数,即: 在[最小值,最大值]范围内 范围可以是[5,20]、-29、-3]或[-13,13](可以在任何范围内,正负或介于两者之间) 该代码在Android中运行良好 到目前为止,我得到的是这个,但它似乎不适用于负范围 1 + (int)(Math.random() * ((Max - Min) + 1)); 我很确定你想要 Min+(int)(Math.random()*((Max-Min) + 1)); 但是,我应该指出,[-3,-29]范围的最小值和最大值是相反的。
1 + (int)(Math.random() * ((Max - Min) + 1));
我很确定你想要
Min+(int)(Math.random()*((Max-Min) + 1));
但是,我应该指出,[-3,-29]范围的最小值和最大值是相反的。(正如Merlyn所指出的,[5,-13]也是如此。)
如果你只想输入任意两个数字,a和b,然后使用代码
int Min = Math.min(a,b);
int Max = Math.max(a,b);
这样你就不用担心订单了。这甚至适用于a==b.我很确定你想要的
Min+(int)(Math.random()*((Max-Min) + 1));
但是,我应该指出,[-3,-29]范围的最小值和最大值是相反的。(正如Merlyn所指出的,[5,-13]也是如此。)
如果你只想输入任意两个数字,a和b,然后使用代码
int Min = Math.min(a,b);
int Max = Math.max(a,b);
这样你就不用担心订单了。这甚至适用于a==b。试试这个
int min = -100;
int max = 100;
Random rand = new Random();
return rand.nextInt(max - min + 1) + min;
试试这个
int min = -100;
int max = 100;
Random rand = new Random();
return rand.nextInt(max - min + 1) + min;
有人提到过他的最小值和最大值是相反的吗?因为这就是把他的密码搞砸的原因 编辑
另一件事搞乱了他的代码:它应该是
Min+
而不是1+
有人提到过他的Min和max是相反的吗?因为这就是把他的密码搞砸的原因
/**
* @param bound1 an inclusive upper or lower bound
* @param bound2 an inclusive lower or upper bound
* @return a uniformly distributed pseudo-random number in the range.
*/
public static int randomInRange(int bound1, int bound2) {
int min = Math.min(bound1, bound2);
int max = Math.max(bound1, bound2);
return min + (int)(Math.random() * (max - min + 1));
}
编辑
另一件事搞乱了他的代码:应该是Min+
而不是1+
/**
* @param bound1 an inclusive upper or lower bound
* @param bound2 an inclusive lower or upper bound
* @return a uniformly distributed pseudo-random number in the range.
*/
public static int randomInRange(int bound1, int bound2) {
int min = Math.min(bound1, bound2);
int max = Math.max(bound1, bound2);
return min + (int)(Math.random() * (max - min + 1));
}
如果调用方可以保证
bound1
小于或等于bound2
,则可以跳过计算最小和最大边界的步骤;e、 g
/**
* @param min the inclusive lower bound
* @param max the inclusive upper bound
* @return a uniformly distributed pseudo-random number in the range.
*/
public static int randomInRange(int min, int max) {
return min + (int)(Math.random() * (max - min + 1));
}
我还没有在Android上测试过,但它应该可以在任何Java或类似Java的平台上工作,这些平台支持符合标准(Sun)JavaSE规范的方法
如果调用方可以保证
bound1
小于或等于bound2
,则可以跳过计算最小和最大边界的步骤;e、 g
/**
* @param min the inclusive lower bound
* @param max the inclusive upper bound
* @return a uniformly distributed pseudo-random number in the range.
*/
public static int randomInRange(int min, int max) {
return min + (int)(Math.random() * (max - min + 1));
}
我还没有在Android上测试过这个,但是它应该可以在任何Java或类似Java的平台上运行,这些平台支持符合标准(Sun)Java SE规范的方法。您只需计算最小值和最大值之间的差值即可 示例-30和30 得到:
delta您只需计算最小值和最大值之间的差值 示例-30和30 得到:
delta You[-3,-29]的位置错误,如果你说[Min,Max],我没有否决投票,但是代码仍然不正确,这个修正。另外,
[5,-13]
也错了。如果你说[Min,Max],可能重复的你[-3,-29]的位置是错误的,我没有否决投票,但代码仍然不正确。而且,[5,-13]
也错了。可能是好渔获量的重复。我没注意到,接得好。我没有注意到。有人提到过,但不,这并不是把他的代码搞砸的原因。编辑的目的是添加实际有用的建议,而不仅仅是虚张声势。因为这是周末。有人提到过,但不,这并不是把他的代码弄糟的原因。编辑后添加了实际有用的建议,而不仅仅是嘲笑。因为今天是周末。