C++产生随机数问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 13:49:37
请高手看看产生4个随机数
要求这4个数不相等!!

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
int a[4];
srand((unsigned)time(NULL));
a[0]=rand()%10;
a[1]=rand()%10;
while(a[1]==a[0])
a[1]=rand()%10;
a[2]=rand()%10;
while(a[2]==a[0]||a[2]==a[1])
a[2]=rand()%10;
a[3]=rand()%10;
while(a[3]==a[0]||a[3]==a[1]||a[3]==a[2])
a[3]=rand()%10;
for(int i=0;i<4;i++)
cout<<a[i];
cout<<endl;
return 0;
}

/*********************************************************/

int main()
{
int a[4];
loop:
srand((unsigned)time(NULL));
for(int i=0;i<4;i++)
a[i]=rand()%10;
if(a[0]==a[1]||a[0]==a[2]||a[0]==a[3]||a[1]==a[2]||a[1]==a[3]||a[2]==a[3])
goto loop;
for(i=0;i<4;i++)
cout<<a[i];
cout<<endl;
return 0;

LS的代码是错误的
看下面的代码

#include <iostream>
#include <ctime>
using namespace std;

void Rand( int *array, int num);
//函数作用:用array产生num个随机数

int main()
{
srand( time( 0 ) );
int a[10];

Rand( a, 10 );
cout<< "-----------" <<endl;
for(int i=0; i<10; i++)
{
cout<< a[i] <<endl;
}

return 0;
}

void Rand( int *array, int num)
{
int i = 0;
array[i] = rand() %100; //产生第一个
i = 1; //要准备产生第2个
for( ; i < num ; )
{
array[i] = rand()%100;
for( int j=0; j<i ; j++)
{
//实现最后一个和以前的做比较
if( array[j] != array[i] )
{
if( j == (i-1) )
{
//要到最后一个才准备产生下一个
i++;
break;
}
}
else
{
//如果有一个一样,就马上退出循环,重新产生