簡體   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