1. 程式人生 > >srand((unsigned)time(NULL))隨機數

srand((unsigned)time(NULL))隨機數

詳細解釋:連結

應用:

隨機抽取陣列中的數

//有放回------------------- 
#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;
}