不重複 固定個數隨機數演算法

2021-07-25 13:33:24 字數 1194 閱讀 7287

最近還是在做卡牌,根據ui需求,想給卡牌不同花色(卡牌數目不固定),在網上找了個演算法,結果被坑了一下。。。主要是遞迴那裡出了問題

goalcnt是後加的引數,之前只有n乙個引數,導致無法給出set和需要數目的對等的結果。

/**

* 隨機指定範圍內n個不重複的數

* 利用hashset的特徵,只能存放不同的值

*@param

min

指定範圍最小值

*@param

max

指定範圍最大值

*@param

n

距離目標隨機數個數還差的個數

*@param

goalcnt

目標隨機數個數

*@param

set

隨機數結果集

*@return

*/public staticlistrandomset(intmin,intmax,intn,intgoalcnt,hashsetset)

for(inti = 0; i < n; i++)

intsetsize = set.size();

// 如果存入的數小於指定生成的個數,則呼叫遞迴再生成剩餘個數的隨機數,如此迴圈,直到達到指定大小

if(setsize < goalcnt)

iteratoriterator = set.iterator();

while(iterator.hasnext())

returnrandom;

}

不重複隨機數

1 不重複隨機數1 生產 lowerbound,upperbound 的隨機數,核心 int upperbound lowerbound 1 rnd lowerbound 示例 如下 sub rndnumnorepeat1 dimdic dim i set dic createobject scri...

例子 隨機數 不重複的隨機數

以隨機數是js數學物件的方法之一。math.random 0 1的隨機數這樣使用的範圍就比較小,所以如果想用這個api獲得其它範圍的隨機數的話,就需要使用下面這種 math.random b a 1 a 以上這種寫法是獲取a b的隨機數的寫法,比如想要50 100的隨機數,就應該是 math.ran...

不重複隨機數生成

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