你要不同的10个数。你可以设个数组存储已经产生的数。比如已经产生了第一个数5,你用rand()生成了又一个5时,比较一下以产生的数发现是5,就跳过,看下一个。总能产生10个不同的随机数。
算法就是,每生成一个数就与原来生成的数比较,如果有相等的就就重新生成一个数,这样就能保证10个数都不相等了。下面这个程序生成数的范围是0到100:
#include <iostream>
#include <stdlib.h> //rand(),srand()函数在这个头文件中
#include <time.h> //time(0)在这个头文件中
#define MAX 100
using namespace std;
void main()
{
int arr[10];
int i=0;
bool ret=false;
srand((unsigned)time(NULL));
while(1)
{
arr[i]=rand()%MAX+1;
for(int j=0;j<i;j++)
{
if(arr[j]==arr[i])
ret=true;
}
if(!ret)
{
i++;
ret=false;
}
if(i==10)
{
break;
}
}
while(--i)
{ cout<<arr[i]<<" "; }
cout<<arr[0]<<endl;
}
注:产生10个100以内的数字
for(i=0; i<10; i++)
printf("%d\n", rand() % 100);
return 0;
}