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