[英]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.