c++生成随机不重复整数
(2012-10-31 16:56:32)
标签:
杂谈 |
分类: c*cpp |
一、算法
1: 把你最终需要的结果(不重复的数)预先放在一个数组中,
因为rand函数产生的随机数会重复,我们不直接用,而是用来对应数组的下标
2: rand产生一个随机下标,我们就取出对应数组中的值(我们真正需要的随机数)
3: 然后用数组最后一个值来替换该下标数组中的值
4: 将产生随机下标的范围减少一
5: goto 2
2: rand产生一个随机下标,我们就取出对应数组中的值(我们真正需要的随机数)
3: 然后用数组最后一个值来替换该下标数组中的值
4: 将产生随机下标的范围减少一
5: goto 2
二、代码
void shuiji(int min,int max)
{
int num=max-min+1; //要随机数的个数
int index; //随机下标
for(int i=0;i //准备要被随机的数
a[ i ]=i+min;
srand((int)time(0)); //随机种子
for(int i=0;i
{
index=(int)((float)(num-i)*rand()/(RAND_MAX+1.0)); //产生随机下标
j[ i ]=a[index]; //把不重复的随机数下标保存到数组中
a[ index ]=a[ num-1-i ]; //用随机范围内的最后一个随机下标对应的值,去替换己用过的值.这样就不重复了.(即
//把上面用过的a[ index ]丢掉。)
};
}
{
}