c++生成随机数,要求在1-10之间,并且每次生成的值都不一样,该如何解决,请详细!

如题所述

楼上中间部分改一下应该就ok了
比较懒,直接借用楼上的了,别介意哈(纯手打,写错了自行调整一下
int j; // 用来检查重复
static int a[0]={0,};
cout<<"这是一个随机生成10个数字的程序,生成的数在1到10之间...."<<endl;
for(i = 0; i < 10; ) // 下标递增放后面处理
{
a[i] = rand()%10 +1;
for(j= 0; j < i; ++j)
{
if ( a[j] == a[i]) //重复了
continue; // 再来一遍
}
++i; // 准备下一个数下标
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-04
程序如下,望采纳!
#include<iostream>
# include "stdlib.h"
# include"time.h"
using namespace std;
int main(){
srand((unsigned)time(NULL));
int X=1;
int Y=10; //X、Y设置生成的随机数的范围;
int i=0;
static int a[36];
cout<<"这是一个随机生成20个数字的程序,生成的数在1到10之间...."<<endl;
for(;i<20;i++){
a[i]=rand()%(Y-X+1)+X;
}
cout<<endl;
cout<<"输出产生的20个数字"<<endl<<endl;
int j=0;
for(;j<20;j++)
cout<<a[j]<<' ';
return 0;
}追问

不行呀,大佬!有重复的值呀!

追答

有重复的值是因为生成的数在1~10之间。而现在要生成20个数,肯定会有重复的嘛,嘿嘿...你把
int X=1;
int Y=10; //X、Y设置生成的随机数的范围;
X、Y的范围改为:X=1;Y=1000;这样就不会有重复的值了,呵呵。

本回答被提问者和网友采纳
第2个回答  2012-05-16
生成时比较下,重复的删掉就好了呗。
相似回答