C 產生不重複的隨機數

2022-01-16 15:49:02 字數 1236 閱讀 5584

方法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;   }

方法4 利用arraylist

int intarr=new int[100];

arraylist mylist=new arraylist();

random rnd=new random();

while(mylist.count<100)

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

intarr[i]=(int)mylist[i];

高效產生不重複的隨機數

purpose 生成隨機的不重複的測試資料 1000w資料量,要保證生成不重複的資料量,一般的程式沒有做到。但,本程式做到了。include include include include include include define size 10000000 int num size void ...

關於產生不重複隨機數的演算法

來自 方法1 去重法 這是最容易想到的方法,逐個產生這些隨機數,每產生乙個,都跟前面的隨機數比較,如果重複,就重新產生。這種方法效率比較低,且比較次數呈線性增長,越往後次數越多。方法2 篩選法 所謂 篩選法 就是根據要產生隨機數指定的範圍 起始數必須小於終止數 將這些數全部裝入乙個陣列,然後利用系統...

產生n個不重複的隨機數

這是最容易想到的方法,逐個產生這些隨機數,每產生乙個,都跟前面的隨機數比較,如果重複,就重新產生。可以使用hashtable或陣列標記,這種方法效率比較低,且比較次數呈線性增長,越往後次數越多。所謂 篩選法 就是根據要產生隨機數指定的範圍 起始數必須小於終止數 將這些數全部裝入乙個陣列,然後利用系統...