簡體   English   中英

如何從具有給定元素的數組生成隨機整數?

[英]How to generate a random int from an array with given elements?

我在從數組生成隨機int遇到麻煩。 在某些情況下,輸出是int ,但不是此數組的元素。

public static int array1[] = new int [] {0,3,6,9,12,15,18,21,24,27,30,33,36};
public static int rand;

public static int random()
{
    int max = array1[12];
    int min = array1[0];
    rand = (int) Math.floor(Math.random()*(max - min)+1);
    return rand;
}

我究竟做錯了什么?

您當前的算法正在計算數組中第一個和最后一個元素之間的隨機數。

相反,您應該從數組中檢索隨機元素。 為此,最好生成一個介於0和數組長度(不包括數組)之間的隨機數,然后返回該索引處的元素。

而不是根據數組的最大和最小元素定義的范圍生成隨機元素,而是生成[0..12]范圍內的隨機元素。

換句話說,在數組中選擇一個隨機索引

您最好在0和數組的互斥上限之間創建一個隨機整數。 然后,您可以將隨機數用作數組索引,並且您的隨機值將始終是提供的值之一。

就目前而言,您實際上並沒有真正使用數組-您所做的只是使用第一個索引和最后一個索引來建立隨機int的包含性下限和排除性上界,結果之間將是任何int。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM