您的位置:首页 > 其它

一组不重复的随机数的产生方式

2013-06-24 12:50 211 查看
要产生一组不重复的随机数,如果直接使用rand()函数多次之后可能产生相同的值,因此,假设在0~n的范围内产生n个随机数(不能重复),要产生不同的值可以通过如下方式:

1)定义一个数组,对数组进行初始化,然后定义一个变量i=n,然后在0~i-1的范围内产生一个随机数;

2)将产生的随机数与i-1位置的值进行交换;

3)然后i依次递减i--重复步骤1。

完成代码如下:

#include<iostream>

#include<cstdlib>

using namespace std;

void printArrays(int s[], int len) {

for (int i = 0; i < len; i++) {

cout << s[i] << " ";

}

cout << endl;

}

void swap(int & a,int &b){

int c=a;

a=b;

b=c;

}

void randomGenerate(int arr[],int n){

for(int i=n;i>0;i--){

swap(arr[i-1],arr[rand()%i]);

}

}

int main(){

int n;

cin>>n;

int *p=new int
;

for(int i=0;i<n;i++){

p[i]=i+1;

}

randomGenerate(p,n);

printArrays(p,n);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: