高效產生不重複的隨機數

2021-06-16 21:57:33 字數 412 閱讀 2178

//purpose:  生成隨機的不重複的測試資料  

//1000w資料量,要保證生成不重複的資料量,一般的程式沒有做到。但,本程式做到了。

#include #include #include #include #include #include #define size 10000000

int num[size] = ;

void swap(int* a, int* b)//第一種,也是最常用的一種

int main()

for (n = 0; n < size; n++)

fprintf(fp, "%d ", num[n]);

fclose(fp);

return 0;

}

如何高效地產生多個不重複的隨機數

型別一 完全範圍內的隨機數 1 int a 100 2 3 1.初始化 按序列號依次賦值 4for int i 0 i 99 i 58 2.生成不同的隨機數序列 9for int i 99 i 1 i 10 上面這段 只需要遍歷一次就可以產生這100個不重複的隨機數.型別二 部分範圍內的多個不同的隨...

C 產生不重複的隨機數

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

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

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