加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

c++生成随机不重复整数

(2012-10-31 16:56:32)
标签:

杂谈

分类: c*cpp
一、算法
1: 把你最终需要的结果(不重复的数)预先放在一个数组中, 因为rand函数产生的随机数会重复,我们不直接用,而是用来对应数组的下标
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+min;
  srand((int)time(0));      //随机种子
  for(int i=0;i
  {
    index=(int)((float)(num-i)*rand()/(RAND_MAX+1.0));     //产生随机下标
    j[ ]=a[index];          //把不重复的随机数下标保存到数组中
    a[ index ]=a[ num-1-i ];    //用随机范围内的最后一个随机下标对应的值,去替换己用过的值.这样就不重复了.(即
                            //把上面用过的a[ index ]丢掉。)
  };
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有