1. 程式人生 > >生成一系列不重複的隨機數 及寫入檔案

生成一系列不重複的隨機數 及寫入檔案

為什麼要寫這個程式:
原因是這樣的,我在寫排序演算法時感覺自己輸入原資料輸入的好累,於是自己想了想決定讓電腦自己輸入,但是由隨機數輸入會有重複的,於是我做了一些修正,實現了:

input: 輸入 n

output: 輸出1-n之間不同的n個數,位置隨機,每個數都會輸出

思路:用隨機數去輸出數,用陣列去接每次要輸出的數。
每次要把隨機數加入陣列時判斷一下,是否和原來的資料重複,重複就不加入,不重複就加入。
生成不重複隨機數的函式是 srandnum(int n) n表示要生成n個隨機數
判斷是否重複的是 isRepeat(int temp) temp是要新加入的數

附上原始碼,並且有相關解釋:

////  作用是隨機輸出1-n之間的數,n為輸入 ,無重複,共n個
#include <iostream>
#include <ctime>
using namespace std;
int num[1000];                    //巨集定義num陣列
int isRepeat(int temp,int n){    //如果相同為1,不同為0
    for(int i=0;i<n;i++){
        if(temp==num[i]) return 1;
    }
    return 0;
}
void  srandnum(int
n){ for(int i=0;i<1000;i++) num[i]=0; for(i=0;i<n;i++){ int temp = rand()%n+1; //生成1-n之間的隨機數 if(isRepeat(temp,n)){ //如果有重複就重新做一次迴圈,i-- i--; } else{ num[i] = temp; //沒重複就把資料儲存在num數組裡面 } } } void main() { int n; cin
>>n; srandnum(n); for(int i=0;i<n;i++) cout<<num[i]<<" "; }

轉載請說明部落格出處,謝謝