[英]Generate random numbers between two numbers
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();
类。 有没有其他方法来生成随机数。 我很惊讶可以应用什么逻辑来生成两个数字之间的随机数。
这真的很容易......你只需要弄清楚哪个是最小值,两个数字之间有什么区别(让我们称之为diff
)。 然后,您可以通过乘以diff
来缩放Math.random值(介于0
和1
之间)(现在它的范围介于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();
考虑使用此代码:
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
如果您期望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)的向下舍入
您的麦克风可能会发出白噪声,并从那里取任何数字。 之后,您可以从给定数据中获取任何数字,并根据您的需要进行操作。 可以在此处找到从麦克风获取数据的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.