public class TestSample {
public static void main(String[] args) {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
double ran = Math.random();
}
}
我不想使用Random r = new Random();
课程。有没有其他方法来生成随机数。我很惊讶可以应用什么逻辑来生成两个数字之间的随机数。
答案 0 :(得分:8)
这很简单......你只需要弄清楚哪个是最小值,两个数字之间有什么区别(我们称之为diff
)。然后,您可以通过乘以0
(现在其范围介于1
和diff
之间)来缩放Math.random值(0
和diff
之间) 。然后,如果您添加最小值,则您的范围介于min
和min + diff
之间(这是另一个值)
int min = min(a,b);
int max = max(a,b);
int diff = max - min;
int result = min + diff * Math.random();
答案 1 :(得分:5)
考虑使用此代码:
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
double ran = Math.random();
double random;
if(a < b)
random = (b-a)*ran + a;
else
random = (a-b)*ran + b;
如果您考虑使用负数逻辑可以轻微更改
,这将适用于a >= 0 and b >= 0
答案 2 :(得分:0)
如果您期望double
结果,最简单的方法是
int a =
int b =
double result = (a-b)*Math.random() + b;
当你得到相同的分布时,哪个更大是没关系的。
但是,如果你想要'a'和'b'之间的随机整数有点复杂。
int a =
int b =
int result = Math.floor((Math.abs(a-b)+1) * Math.random()) + Math.min(a, b);
结果不同的原因是0和1之间的随机双重将小于1,即[0.0,1.0]但是1到6之间的随机整数通常包括1,2,3,4,5, 6平等。作为小数,这是[0.0 ... 7.0)
的舍入答案 3 :(得分:0)
您的麦克风可能会发出白噪声,并从那里取任何数字。之后,您可以从给定数据中获取任何数字,并根据您的需要进行操作。可以找到从麦克风获取数据的示例here。