| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1025 人关注过本帖
标题:[求助]求随机正整数问题
只看楼主 加入收藏
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
 问题点数:0 回复次数:4 
[求助]求随机正整数问题

我想编一个猜数字的游戏,须要让计算机随机生成一个4位数的正整数,条件有两个:
1、所生成的4位数每一位上的数字要不同;
2、要保证50次内生成的整数重复次数不得超过2次;
请问我该怎么办?

搜索更多相关主题的帖子: 整数 随机 
2006-08-06 15:50
mnb1237273
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-1
收藏
得分:0 
我也想知道

三分天注定,七分靠打拼,爱拼才会赢。我要早日跨入C语言的精彩世界。实践才是检验真理的唯一标准!
2006-08-06 16:08
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用sunyuantz在2006-8-6 15:50:02的发言:

我想编一个猜数字的游戏,须要让计算机随机生成一个4位数的正整数,条件有两个:
1、所生成的4位数每一位上的数字要不同;
2、要保证50次内生成的整数重复次数不得超过2次;
请问我该怎么办?

用链表来解会简单些.
算法如下:
1,建立一个链表寸0-9十个数.每次rand()%(10-i),(第一次必须特殊化,因为首个数字不能为0)从链表中对应取相应的数字,每取出数字后,释放相应的节点。按照这个办法可取到4位每一位上的数字都不同的正整数.
2,建立一个链表,链表的长度最大为50,节点信息为每次生成的正整数数值和它所重复的次数(以下称重复次数)以及它是在第几次生成(简称生成次数)的,假设第j次生成的正整数是num来讲,只要遍历这个链表,每个节点的生成次数成员次数增1.如果num在链表中已经有建立num值的节点,则相应的节点重复次数成员增1(如果重复次数超过2,重新生成数字,节点的重复次数成员还原,即减1),如果num在链表中没有相应的节点,则分两种情况:<1>如果j大于等于50,则必有一个节点,其生成次数于j的差大于50,把这个节点的信息改为num的相应信息.<2>如果j小于50,则在链表的尾部新建一个num节点.

[此贴子已经被作者于2006-8-6 18:56:12编辑过]


对不礼貌的女生收钱......
2006-08-06 18:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
时间函数配合求余函数即可办到,不过要保证50次之内不能重复,就应该把以前生成的数存起来,如果当前生成的数已经出现过,则此次数无效.这个存储结构选队列应该要好点.

倚天照海花无数,流水高山心自知。
2006-08-06 20:22
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 

谢谢,我明白了!


我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2006-08-07 15:01
快速回复:[求助]求随机正整数问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034644 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved