繁体   English   中英

在两个数字之间生成随机数

[英]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值(介于01之间)(现在它的范围介于0diff之间)。 然后,如果添加最小值,则范围介于minmin + 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM