方法1:
思想是用乙個陣列來儲存索引號,先隨機生成乙個陣列位置,然後把這個位置的索引號取出來,並把最後乙個索引號複製到當前的陣列位置,然後使隨機數的上限減一,具體如:先把這100個數放在乙個陣列內,每次隨機取乙個位置(第一次是1-100,第二次是1-99,...),將該位置的數用最後的數代替。
int index = new int[15];
for (int i = 0; i < 15; i++)
index = i;
random r = new random();
//用來儲存隨機生成的不重複的10個數
int result = new int[10];
int site = 15;//設定下限
int id;
for (int j = 0; j < 10; j++)
方法2:
利用hashtable
hashtable hashtable = new hashtable();
random rm = new random();
int rmnum = 10;
for (int i = 0; hashtable.count < rmnum; i++)
}方法3:
遞迴,用它來檢測生成的隨機數是否有重複,如果取出來的數字和已取得的數字有重複就重新隨機獲取。
random ra=new random(unchecked((int)datetime.now.ticks));int arrnum=new int[10];
int tmp=0;
int minvalue=1;
int maxvalue=10;
for (int i=0;i<10;i++)
.........
.........
public int getnum(int arrnum,int tmp,int minvalue,int maxvalue,random ra)
n++; }
return tmp;
}
不重複隨機數生成
直接上 生成 0,total 的隨機數 最大隨機數 ilist private static ilistgetrandomsequence int total random random new random for var i listbase.count 1 i 0 i return listo...
C 生成不重複的隨機數
在做洗牌演算法的時候用到了隨機數,並且產生的隨機數中不能有重複的元素,因為是用c語言實現的,就把值賦給陣列,然後用隨機數產生陣列的下標,每產生乙個就刪除對應的元素,然後隨機數的生成範圍減一,但是這樣做每次都要迴圈去移動陣列元素,從時間複雜度上來說這樣並不好。於是,後來用c 重新實現 實現的思路並沒有...
C 生成不重複的隨機數
private string rndomstr int codelength string code int temp 1 記錄上次隨機數值,盡量避避免生產幾個一樣的隨機數 random rand new random 採用乙個簡單的演算法以保證生成隨機數的不同 for int i 1 i code...