注册 登录
编程论坛 C++教室

[求助]做一个四位随机数

xvholly 发布于 2007-04-15 16:18, 1214 次点击
我想做一个随机的四位数,用数组存储每个位,各位都不相等.但不知道怎么写,大家帮帮忙忙.谢谢!
5 回复
#2
I喜欢c2007-04-15 23:27
产生一个随机数(一位)在与前面比较~``若重复就重新生成....
#3
jiushiwo2007-04-16 10:05
想知道,自己先研究下
#4
aipb20072007-04-16 12:50

产生一个随机数会的话就OK了!

#5
xvholly2007-04-16 13:06
srand(time(NULL));
a[0] = rand() % 10;
do
{
a[1] = rand() % 10;
}while (a[1] == a[0]);
do
{
a[2] = rand() % 10;
}while (a[2] == a[0] || a[2] == a[1]);
do
{
a[3] = rand() %10;
}while (a[3] == a[0] || a[3] == a[1] || a[3] == a[2]);

上面是我写的,不过感觉太麻烦了,如果产生更多位的要更麻烦,大家有没有好的方法?
#6
游乐园2007-04-17 10:11

写了个任意位(1~10)都不同的随机数


#include<iostream>
#include<ctime>
#include<sstream>
#include<string>
#include<conio.h>


using namespace std;


int main()
{
int N,num,max=9,min=1;
register int i,j;
string str;
stringstream p;//用来数字转字符串
cout<<\"input the digit(1~10) of random number you wanna generate:\";
cin>>N;
for(i=1;i<N;++i) {max*=10; min*=10;}
srand((unsigned)time(NULL));
while(num=rand()%max+min)
{
    p<<num;
    str=p.str();
    for(i=0,j=1;i<str.size();j<str.size()?++j:j=1+(++i))  if(str[i]==str[j]) break; //for循环用来判断各位是否相同
       if(i==str.size()) break;
}
    for(i=0;i<str.size();++i) cout<<str[i];
    cout<<endl;
    getch();
return 0;


}

1