Java 不重複隨機數生成簡易演算法

2021-07-10 13:26:24 字數 1074 閱讀 8284

通過單個陣列簡易實現不重複隨機數生成,先上原始碼。

/**

* 獲取隨機數組

* @param 源陣列

* @param size 目標陣列大小

* @return 隨機數組

*/public static int getrandomres(int source,int size)

int result = new int[size];

random random = new random();

for (int i = 0; i < size; i++)

return result;

}

下面看**,數字為陣列的index。

黑色數字表示能隨機到的數,紅色代表不能隨機到數。

因此只能隨機到index:0~4的數,假設是2,然後將2與index5互換位置。

此時結果result =

繼續迴圈

從前index:0~3中迴圈,假設取出index0,與index4互換

此時結果為result =

依次類推。

優點:簡單快捷

缺點:每次無法取到最後乙個數。

不斷隨機,使用set去重

/**

*生成隨機數組

*@param size 目標陣列大小

*@param max 目標數最大值

*/public setgetrandomset(int size,int max)

}

此處使用linkedhashset保證插入順序與結果相同。

不重複隨機數生成

直接上 生成 0,total 的隨機數 最大隨機數 ilist private static ilistgetrandomsequence int total random random new random for var i listbase.count 1 i 0 i return listo...

生成不重複的隨機數

思想是用乙個陣列來儲存索引號,先隨機生成乙個陣列位置,然後把這個位置的索引號取出來,並把最後乙個索引號複製到當前的陣列位置,然後使隨機 數的上限減一,具體如 先把這100個數放在乙個陣列內,每次隨機取乙個位置 第一次是1 100,第二次是1 99,將該位置的數用最後的數 代替。int index n...

隨機數生成(永不重複)

public class randomtreeutils char chars new char char chars new char int treedeeps chars.length int key 7 最多生成7位數 if treedeeps key 返回樹形 arraylist tree...