最近還是在做卡牌,根據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...