社区
C语言
帖子详情
求教一个c小程序。
Truly
2002-08-24 10:16:36
是这样一个问题,就是计算机事先生成4个0-9且不重复的随机序列,然后由用户来猜,如果位置和数字完全正确就是a,如果数字正确而位置不正确就是b,比如计算机抽出2,9,3,1,如果回答2,9,1,0,就输出2a1b。
一个文曲星上的游戏。
关键是求教怎样生成4个不重复的随机数。
...全文
98
18
打赏
收藏
求教一个c小程序。
是这样一个问题,就是计算机事先生成4个0-9且不重复的随机序列,然后由用户来猜,如果位置和数字完全正确就是a,如果数字正确而位置不正确就是b,比如计算机抽出2,9,3,1,如果回答2,9,1,0,就输出2a1b。 一个文曲星上的游戏。 关键是求教怎样生成4个不重复的随机数。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Truly
2002-08-24
打赏
举报
回复
谢谢zheng_can(nothrow) 和kingofvc(还是喜欢97) 。
n5(先学好C++再说) 的方法确实存在缺陷,可能导致无限延迟。
zhichao8336
2002-08-24
打赏
举报
回复
重新设置随机种子,具体怎么样自己看
zheng_can
2002-08-24
打赏
举报
回复
vector<int> tmp( 10 );
vector<int> result( 4 );
int p = 0;
for ( int i = 0; i < 4; ++i ) {
p = ( p + rand() ) % 10;
while ( tmp[p] != 0 ) { p = ( p + 1 ) % 10; }
tmp[p] = p;
result[i] = p + 1;
}
kingofvc
2002-08-24
打赏
举报
回复
这样还是听麻烦 还是在给number【i】赋值时用randnum-1吧
kingofvc
2002-08-24
打赏
举报
回复
哦 你要的是0~9的话 rand()%10;
kingofvc
2002-08-24
打赏
举报
回复
int number[4];
int select[10];
for(int i=0;i<10;i++)
{select[i]=0;}
srand((unsigned)time());
for(i=0;i<4;)
{
randnum=rand()%11;
if(!select[randrum])
{
select[randrum]=randnum;
number[i]=randum;
i++;
}
}
zheng_can
2002-08-24
打赏
举报
回复
对于我的方法
只用取四次随机数就可以了
如果用 n5(先学好C++再说) 的方法
你能够保证计算的时间吗?
要是每次算出来的数都是一样的怎么办?
kingofvc
2002-08-24
打赏
举报
回复
对不起大小应为10
Truly
2002-08-24
打赏
举报
回复
不错的想法,能否给出代码?
kingofvc
2002-08-24
打赏
举报
回复
判断是否选择了没有的元素可以使用步长为1 大小为4的散列表
kingofvc
2002-08-24
打赏
举报
回复
for的条件是i<4 那么i++可以在选到合适的值时才执行
for(int i=0;i<4;)
{
if(选到了) i++;
}
Truly
2002-08-24
打赏
举报
回复
为什么没人回答啊?
Truly
2002-08-24
打赏
举报
回复
这种方法我也试了,可是重新取之后又有重复的可能,而如何在重取之后重新跳入检查的循环呢?
看我的程序应如何改进:
for(i=0;i<4;i++)
{
r[i]=rand()%10;
for(j=0;j<i;j++)
if(r[j]==r[i])
{
r[i]=rand()%10;
}
n5
2002-08-24
打赏
举报
回复
我的方法:如果发现取得的随机数与前面的有重复,重新取
Truly
2002-08-24
打赏
举报
回复
zheng_can(nothrow)你的算法太复杂了吧。海盗扔人没听说过,不过兔子选王倒是听说过。有没有简单点的?
Truly
2002-08-24
打赏
举报
回复
为什么大家都要误会我的意思呢,我明白用srand( (unsigned)time( NULL ) );来随机化种子,我困惑的是怎样使每次生成的四个数字都各不相同,比如3,2,1,9,而不会出现2,9,2,0。
zheng_can
2002-08-24
打赏
举报
回复
这么说吧:
你听过海盗扔人下海的故事吗?
可以用类似的方法,生成一个随机数 i,然后从 0 开始数,先数 i 步,如果当前这个数已经取过了,则继续判断相邻的那个数,直到碰到一个没被取过的数为止,取得该数
再从刚刚取得的数起,生成一个随机数 i,……………………
总共循环 4 次就可以了
foxmail
2002-08-24
打赏
举报
回复
int nArray[4];
srand((unsigned char)time(NULL));
//srand这个函数我记不大清,如果不对请看msdn
for(i=0;i<4;i++)
{
nArray[i]=rand()%10;
}
C语言实现的
一个
交互
小程序
(一)
关于C语言如何有效正确的学习,我写了
一个
专栏:你可以这样学习C语言,有兴趣的小伙伴可以来看看哦,希望能对你有收获!本文例子需要源码的可以关注我后私信我。 这几天我用C语言自己写了
一个
交互
小程序
。这个交互
小程序
,我精力主要是在友好性方面,美观方面,我实在没啥天赋。 文末会给大家推荐几本书,希望对需要的朋友有帮助。 这个交互
小程序
其实很简单,现在很多C语言实例项目,像什么学生管理系统、图书管理系...
C语言有趣的
小程序
最近闲着没事写了
一个
C语言
小程序
,就当作是玩玩。 本
小程序
的各个功能都是通过dos命令来实现的。 运行结果如下图: 该
小程序
有以下几个功能: 1、启动计算器 2、新建记事本 3、打开画图板 4、定时关机(15s、30s、60s) 5、显示系统时间或修改 6、重启计算机
小程序
源代码: #include<stdio.h> #include<...
VS2010编写第
一个
C语言
小程序
今天就开始我的第
一个
C的编程吧~ 1. 如何用visual studio 2010 新建
一个
C程序项目 首先,打开VS2010 ,点击“文件/新建/项目”或者用快捷键“Ctrl+Shift+N”,之后会弹出下面图示: 我们选择黄色着重表示的win32控制台应用程序(win32 Console Application),输入名称“project_001”,点击确定 之后弹出如下
学习C语言必须掌握的10个经典的C语言
小程序
今天给大家分享10个比较基础的C语言的
小程序
,希望给C语言初学者带来一定帮助。 那些想学习C/C++的同学小编这里准备了一份C/C++学习资料,加小编C/C++编程学习社区:点击即可获取! 点击获取:➤这里 1、题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? **程序分析:**可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件...
【项目实例】5分钟教你
一个
C语言恶搞
小程序
,我已经在医院wifi还挺快的
话不多说,今天给大家介绍两个好东西,就是利用C语言编写的两个恶搞
小程序
,有多厉害,只有你自己去试试了。 利用C语言+API写的两个恶作剧程序,如果你的朋友同学试过之后可能就会有某些冲动了。 注意安全,找好退路,不要像我一样被按在角落里面… 直接上代码:(本来想贴上GIF图的,结果转换出来很模糊~大家拿代码自己去试试哦! 其实做为
一个
学习者,有
一个
学习的氛围跟
一个
交流圈子特别重要这里我推荐
一个
C语言C++交流群1075673198,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。 本程序会开机自启,请先
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章