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

Java 在两个数字之间生成随机数,java,algorithm,random,Java,Algorithm,Random,我不想使用Random r=new Random()类。有没有其他方法可以生成随机数。我刚刚被什么逻辑可以用来在两个数字之间生成随机数所震惊 这真的很容易。。。您只需找出哪一个是最小值以及两个数字之间的差异(我们称之为diff)。然后,您可以将Math.random值(介于0和1之间)乘以diff(现在它的范围介于0和diff)。然后,如果添加最小值,则范围介于min和min+diff之间(这是另一个值) 考虑使用以下代码: int min = min(a,b); int max = max(a

我不想使用
Random r=new Random()类。有没有其他方法可以生成随机数。我刚刚被什么逻辑可以用来在两个数字之间生成随机数所震惊

这真的很容易。。。您只需找出哪一个是最小值以及两个数字之间的差异(我们称之为
diff
)。然后,您可以将Math.random值(介于
0
1
之间)乘以
diff
(现在它的范围介于
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();
inta=Integer.parseInt(args[0]);
intb=Integer.parseInt(args[1]);
double-ran=Math.random();
双随机;
if(a

<>这将适用于<代码> a>=0和b>=0 < /代码>如果你考虑使用负数,逻辑会缓慢地改变

如果你期待一个<代码>双结果,最简单的方法是

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”和“b”之间的随机整数,则要复杂一些

int a =
int b =
double result = (a-b)*Math.random() + b;

结果不同的原因是,0和1之间的随机双精度将刚好小于1,即[0.0,1.0],但是1和6之间的随机整数通常包括1,2,3,4,5,6等分。作为十进制数,这是[0.0…7.0)

您可以从麦克风中获取白噪声,并从中获取任意数字。之后,您可以从给定数据中获取任意数字,并根据需要进行处理。可以找到从麦克风获取数据的示例。

我能问一下您为什么不想使用Random类?不想使用Random类吗考虑改用这个:>+1:你不需要检查哪个更大或者它们是否为正。如果
a
b
是说“1”和“5”,你会得到一个介于“1”和“5”之间或者“5”和“1”之间的随机数,那么结果应该是相同的。是的,你说得对……因为这样一来,差就变成了负,得到了subtr对大问题感到愤怒。对用负数测试行为感到懒惰…:p
int a =
int b =
double result = (a-b)*Math.random() + b;
int a = 
int b =
int result = Math.floor((Math.abs(a-b)+1) * Math.random()) + Math.min(a, b);