社区
C语言
帖子详情
求教一个c小程序。
Truly
2002-08-24 10:16:36
是这样一个问题,就是计算机事先生成4个0-9且不重复的随机序列,然后由用户来猜,如果位置和数字完全正确就是a,如果数字正确而位置不正确就是b,比如计算机抽出2,9,3,1,如果回答2,9,1,0,就输出2a1b。
一个文曲星上的游戏。
关键是求教怎样生成4个不重复的随机数。
...全文
42
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;
}
AUTOLISP培训教程-4.pdf
也许某员工或干部花了 20 个小时撰写
一个
AutoLISP 程序,表面上,这将近三天的时间,他连一张 图都没有画,甚至可能偶有发呆、沉思,若此程序一天可以替公司绘图部门节省 1 小时绘图时间,那 算一算,只要 20 天就抵销...
C语言错误c2224,新人C语言简单
求教
!第一次发帖望通过
最近在自学C语言,小白
求教
,大神勿喷以下是我做的
一个
书上例题的C语言
小程序
,利用结构体编写
一个
通讯录,输入姓名电话,然后输出这些信息。我做了一点改变,struct notebook man[n];,程序本来是struct notebook ...
数据处理救星降世Power Query
0/ Excel数据处理新利器来了,准备好了吗? 1/ 比网红函数VLOOKUP还全面的功能。——查(查询) 2/ 取其精华,去其糟粕。...——聚(聚合) 9/ 我自己的难题自己造函数,不
求教
别人。——技法(自定义函数)
用c语言代码算出抽奖概率大小,C语言
求教
一个
算概率的问题,c语言概率计算
C语言
求教
一个
算概率的问题,c语言概率计算C语言
求教
一个
算概率的问题,c语言概率计算匿名网友:----------------------int f6,ok;/--------------------------------放代码:/:150/:%d/%d\getch()!cardi) return,i;-...
求解一道c语言编程题,大神
求教
!一道C语言编程题
求教
一道c语言编程,大神进!...
一道C语言编程题
求教
一道c语言编程,大神进!大神
求教
!一道C语言编程题
求教
一道c语言编程,大神进!相关问题:匿名网友:直接上代码#include int main(){double L;double ticheng=0;double rate = 0;int p;printf("请...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章