srand((unsigned)time(NULL))隨機數
阿新 • • 發佈:2018-12-11
詳細解釋:連結
應用:
隨機抽取陣列中的數
//有放回------------------- #include<stdio.h> #include<string.h> #include<algorithm> #include <stdlib.h> #include <time.h> #include<math.h> using namespace std; const int N=17; int a[N]={20,31,50,52,56,60,63,72,110,112}; int main() { int i,n = 10,m = 4; srand((unsigned)time(NULL)); printf("有放回抽取結果為:"); int x; for(i=0;i<m;i++) { x=rand()%n; printf("%d ",a[x]); } return 0; }
隨機抽取陣列中不同的數
//無放回------------------------------ #include<stdio.h> #include<string.h> #include<algorithm> #include <stdlib.h> #include <time.h> #include<math.h> using namespace std; const int N=17; int a[N]={20,31,50,52,56,60,63,72,110,112}; int main() { int b[10] = {0}; //b[N]用來記錄陣列中的數是否已經輸出 int n = 10,m = 4; printf("不放回抽取結果為:"); srand((unsigned)time(NULL));//初始化隨機種子 int x; for(int i=0;i<m;i++) { x=rand()%n;//rand()為產生的一個隨機數 if(b[x] == 0) //保證產生的數不重複 { b[x] = 1; printf("%d ",a[x]); } else i--; } return 0; }