关于随机生成数字的问题???

xxlovec 2010-09-28 02:52:22
我想写一个随机生成1-10的数,并且输出五次,每次的数字各不相同,
就像彩票中的一样,下面是我写的程序,帮忙修改一下,谢谢了

#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int curr_data;
size_t num=0,flag=1;
int data[5]={-1,-1,-1,-1,-1};
srand((unsigned)time(NULL));
while(1)
{
curr_data=rand()%10;
for(size_t ix=0;ix!=5;++ix)
{
if(curr_data==data[ix])
{
flag=0;
break;
}
}
if(num>4)
{
break;
}
if(flag)
{
data[num]=curr_data;
cout<<data[num++]<<" ";
}

}
cout<<"\n";
return 0;
}
...全文
97 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangjianocean 2010-09-28
  • 打赏
  • 举报
回复
这几天刚好看了标准C源码(不知道是MS的还是GNU的或者别的啥公司组织的),希望对你有用。

static unsigned long int next = 1;

int rand(void)
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % 32768;
}

void srand(unsigned int seed)
{
next = seed;
}
jackyloncoln 2010-09-28
  • 打赏
  • 举报
回复
3楼正解
Qyee 2010-09-28
  • 打赏
  • 举报
回复

#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int curr_data;
size_t num=0,flag=1;
int data[5]={-1,-1,-1,-1,-1};
srand((unsigned)time(NULL));
while(1)
{
flag=1;//加上
curr_data=rand()%10;
for(size_t ix=0;ix!=5;++ix)
{
if(curr_data==data[ix])
{
flag=0;
break;
}
}
if(num>4)
{
break;
}
if(flag)
{
data[num]=curr_data;
cout<<data[num++]<<" ";
}
}
cout<<"\n";
return 0;
}

Qyee 2010-09-28
  • 打赏
  • 举报
回复

#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int curr_data;
size_t num=0;
int data[5]={-1,-1,-1,-1,-1};
srand((unsigned)time(NULL));
while(num<5)
{
curr_data=rand()%10;
for(int ix=0;ix<num;++ix)
{
if(curr_data==data[ix])
{
curr_data=rand()%10;
break;
}
}
data[num]=curr_data;
cout<<data[num++]<<" ";
}
cout<<"\n";
return 0;
}

Qyee 2010-09-28
  • 打赏
  • 举报
回复
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int curr_data;
size_t num=0;
int data[5]={-1,-1,-1,-1,-1};
srand((unsigned)time(NULL));
while(num<5)
{
curr_data=rand()%10;
for(int ix=0;ix<num;++ix)
{
if(curr_data==data[ix])
{
curr_data=rand()%10;
break;
}
}
data[num]=curr_data;
cout<<data[num++]<<" ";
}
cout<<"\n";
return 0;
}
  • 打赏
  • 举报
回复
curr_data=rand()%10;//mark,这样只是0-9
curr_data=rand()%10 +1;才是1-10

看你的题目要生成1-10...

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧