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

时间:2011-09-15 07:53:18

标签: java algorithm random

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();课程。有没有其他方法来生成随机数。我很惊讶可以应用什么逻辑来生成两个数字之间的随机数。

4 个答案:

答案 0 :(得分:8)

这很简单......你只需要弄清楚哪个是最小值,两个数字之间有什么区别(我们称之为diff)。然后,您可以通过乘以0(现在其范围介于1diff之间)来缩放Math.random值(0diff之间) 。然后,如果您添加最小值,则您的范围介于minmin + 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