随机算法之随机非重复采样

代码

#include
#include
using namespace std;
const int N =10;
const int M =5;
int main()
{
	int sample[N]={1,2,3,4,5,6,7,8,9,10};
	int result[M];
	bool flag[N];
	for(int i=0;i<N;i++)
	   flag[i]=false;
	int k=0;
	while(k<M){
		int r=(rand()%(N-1))+1;
		if(!flag[r]){
			result[k]=sample[r];
			k++;
			flag[r]=true;
		}
	}
	for(int i=0;i<M;i++){
		cout<<result[i]<<" ";
	}
}

补充–C++随机数产生

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

你可能感兴趣的:(算法)