中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-10 06:27
47,812 主题排行 / 349,914 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 随机显示5个不同的数
可打印版本  7,207 / 57
第1楼 26933062 发表于 2007-01-04 16:12
银牌会员 发帖 879 积分 2,268
随机显示5个不同的数
能不能一次显示出1-100随机的5位数,并且不能有重复的.
想了很久,也搜索了论坛里的大部分帖子,好像都没有同时显示5位数的,关键是还要不能重复,


不好意识,对不起各位了,看来我的表达能力确实有问题.
我的目的是 显示1-100的随机数, 一次同时显示5个 , 并且显示的这5个数不能有重复的.这样说大家能理解了吗?


首先多谢各位的精彩答复,因本人的批处理水平实在太菜,有些高深的答复不太看的懂,所以若有错误的评价还请见谅.....................
1, 6楼的答复基本符号要求,但多次使用时偶而会出现死循环现象,不知什么原因.
2, 13楼的虽没有重复现象,但每次运行后的第一位数总是相同,总觉略有不妥之处.
3, 26楼的虽然也可用,但是觉得过于呆板,(对不起,可能用词不当,但想不出更婉转的词了,见谅!)比如我想显示6位或7,8,9..........位就太麻烦了,其实我的本意是先要求输入随机数的最大值,再输入显示的位数.
4, 个人感觉(从思路上来说)32楼的应该是最理想的,但可惜我看不懂,而32楼的这位兄弟又没把代码按要求写完,(一次显示了100个).
5, 我认为33楼的代码应该是最好的了,从代码上看,应该是绝对没重复,而且很灵活,只是不知道会不会出现他们说的效率低,和死循环.目前运行状况良好.size]

不好意识 版主 经反复测试,你6楼的方法没问题,只是会出现死循环,可能是测试的方法太多了,搞错了对象,对不起了. 在42楼修改后的方法我认为以接近完美,真是条条大路通罗马,好方法太多了,批处理真是对人思路的挑战.

[ Last edited by 26933062 on 2007-1-6 at 10:07 PM ]
第2楼 a9319751 发表于 2007-01-04 20:42
中级用户 发帖 170 积分 439
5个?5位?
1-100 有5位
第3楼 zh159 发表于 2007-01-04 22:17
金牌会员 发帖 1,467 积分 3,687
5随机个1-99

1:


2:


[ Last edited by zh159 on 2007-1-4 at 10:09 AM ]
第4楼 youxi01 发表于 2007-01-04 23:45
高级用户 发帖 247 积分 846 来自 湖南==》广东
来凑个“热闹”
第5楼 namejm 发表于 2007-01-05 01:52
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  楼主的表达有问题,看了半天还不知道究竟是要生成1-99个不同的随机5位数还是在1-99中随机显示5个不同的数,请楼主表达清楚。
第6楼 namejm 发表于 2007-01-05 02:16
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  看了4楼的代码,推测 youxi01 的本意是想显示5个 1-100 之间(不包含100)不同的随机数,但是代码是有问题的:%a% 是 1-5 的数,用 if not defined 来判断 num%a% 这个变量是否被定义过,执行的结果始终是没有定义过。

  按照4楼的思路修改代码如下:

——————————————————————————————————————
  如果循环调用这段代码,在第20次的时候会陷入死循环,具体情况请看16楼的描述,原因分析请看41楼,解决问题的代码请看42楼。

[ Last edited by namejm on 2007-1-6 at 05:03 PM ]
第7楼 tghksj 发表于 2007-01-05 03:05
社区乞丐 发帖 90 积分 -49
怀疑自己的理解能力和楼主表达能力

是5个 还是5位? 5个 1-100 如下:

第8楼 namejm 发表于 2007-01-05 03:33
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  发现很多人都忽略了这样一个细节:%random:~-2% 有可能取到 00 这样的字符串,set /a num=%random:~-2% 虽然可以把 00 字符串数值化,变成0,但是,0却并不是楼主所想要的。
第9楼 tghksj 发表于 2007-01-05 04:30
社区乞丐 发帖 90 积分 -49
那OK,
%random:~-2%不行就%random:~0,2%

保证前面没0

第10楼 ccwan 发表于 2007-01-05 04:36
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
取得的5个数中有相同的算不算?
第11楼 namejm 发表于 2007-01-05 04:41
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  按照楼主的说法,5个数中不能出现相同的数。
第12楼 ccwan 发表于 2007-01-05 04:43
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
目前9楼的已发现有这种情况。
第13楼 tghksj 发表于 2007-01-05 06:18
社区乞丐 发帖 90 积分 -49
OK!!!嵌套递归! 这下不重复了吧???呵呵


[ Last edited by tghksj on 2007-1-4 at 06:11 PM ]
第14楼 tghksj 发表于 2007-01-05 06:44
社区乞丐 发帖 90 积分 -49
我晕~~我傻了,怎么没想起 if not defined
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕



咦?????????不好使?????????????还是有重复的??!
高人解释下..............

暂时只有13楼可以了....

[ Last edited by tghksj on 2007-1-4 at 05:53 PM ]
第15楼 namejm 发表于 2007-01-05 06:58
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  看了14楼的代码,发现里面并没有控制随机数是否重复的语句,多测试几次之后,就会发现有重复数值出现,建议参考一下我在6楼帖出来的代码。
1 2 3 4  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023