![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 05:15 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 出给新手的题(加分题) |
| 可打印版本 1,940 / 18 |
| 第1楼 bat-zw | 发表于 2008-07-20 10:01 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
出给新手的题(加分题) 随机生成互不相同的100个0-99的数字,唯一要求代码要高效。
[ Last edited by zw19750516 on 2008-7-20 at 10:06 AM ] |
|
| 第2楼 obsolete | 发表于 2008-07-20 11:47 |
| 初级用户 发帖 72 积分 192 | |
|
试试
@echo off setlocal enabledelayedexpansion for /l %%i in (0,1,99) do set cell_%%i=%%i set last=99 :loop set /a mod=%last%+1 if %mod%==0 goto :pause set /a index=%random% %% %mod% echo !cell_%index%! set cell_%index%=!cell_%last%! set /a last=%last%-1 goto :loop :pause pause [ Last edited by obsolete on 2008-7-20 at 11:52 AM ] |
|
| 第3楼 bat-zw | 发表于 2008-07-20 14:04 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
修改一下:
[ Last edited by zw19750516 on 2008-7-20 at 02:18 PM ] |
|
| 第4楼 obsolete | 发表于 2008-07-20 14:25 |
| 初级用户 发帖 72 积分 192 | |
Originally posted by zw19750516 at 2008-7-20 14:04: |
|
| 第5楼 523066680 | 发表于 2008-07-20 15:10 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
看我多直接 -----%time%的后面两个数变的好快,应该能当作随机的吧
echo %time:~9,2% 让我给一个进步的题目吧:取100个随机数字 注意哦:如果一路echo %time:~9,2%给出的话,就会是有序的了, 等有几个人回贴后,我就会公布我个人的思路了(搞不好会和大家一样哦) [ Last edited by 523066680 on 2008-7-20 at 03:23 PM ] |
|
| 第6楼 moniuming | 发表于 2008-07-20 15:39 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
我也来凑热闹:
@echo off |
|
| 第7楼 523066680 | 发表于 2008-07-20 15:46 |
| 银牌会员 发帖 1,133 积分 2,362 | |
^^![]() 羡慕!!!今天遇到高人了!!!大家抓住他们 !有问题要一起问哈!!------基本看不出啊!一个头两个大-------- (好一部分我都没看懂啊,不过想想 我的短一些!!高兴!!) 哼! 看我的!!刚改过 速度很慢 想快点关的话 记得ctrl+c,直接关很卡的随机性也不大好 ![]() @echo off&setlocal enabledelayedexpansion for /l %%a in (1,1,100) do ( for /l %%b in (1,1,%time:~10,1%) do (ping -n>nul) echo !time:~9,2! ) pause 我的思路好象靠不住哦 ![]() [ Last edited by 523066680 on 2008-7-20 at 04:10 PM ] |
|
| 第8楼 523066680 | 发表于 2008-07-21 07:34 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
其他会员也要多想想不同思路滴! 我发现最近大家发的贴 只要有一个人发出
解决方案后 帖子就慢慢沉了,大家要勇于创新啊! |
|
| 第9楼 qzwqzw | 发表于 2008-07-21 11:52 |
| 银牌会员 发帖 636 积分 2,343 | |
|
随机交换的老算法讨论过很多次
代码也写了一大堆 在这就不提了 另外出一个新算法 原始构思来自一个mp3随机播放列表问题的讨论 跟2、3楼的比较接近 不过要简单多了 变量延迟版 [ Last edited by qzwqzw on 2008-7-21 at 12:01 PM ] |
|
| 第10楼 qzwqzw | 发表于 2008-07-21 15:18 |
| 银牌会员 发帖 636 积分 2,343 | |
|
将数量级设置到0~10000
挑战性便增强很多了! 将3楼代码数量级改为10000 输出重定向到文本文件 测试花了不到5分钟 而且结果出现了偏差 少了两个数658、5560 重复了一个数5785 [ Last edited by qzwqzw on 2008-7-21 at 03:41 PM ] |
|
| 第11楼 bat-zw | 发表于 2008-07-21 15:23 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
这两天老总来检查,差点没累死人:
|
|
| 第12楼 bat-zw | 发表于 2008-07-21 15:26 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by qzwqzw at 2008-7-21 11:52: 虽然不是新手了,但为兄的思路所赞叹,所以加分。 |
|
| 第13楼 523066680 | 发表于 2008-07-21 15:41 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
我的思路居然没人看……………………………………
![]() 不过我觉得如果说只要一个随机数的话 echo %time:~9,2% 是最简便的 [ Last edited by 523066680 on 2008-7-21 at 03:44 PM ] |
|
| 第14楼 bat-zw | 发表于 2008-07-21 15:55 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by qzwqzw at 2008-7-21 15:18: 我三楼的仅是对二楼的修改,但代码从理论上应该是没问题的,为什么会出现错误还有待详细分析。 |
|
| 第15楼 bat-zw | 发表于 2008-07-21 15:59 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by 523066680 at 2008-7-21 15:41: 这种方法是存在很大局限性的(如要显示一个在0-999内的随机数呢),同时要直接产生一个在0-99内的随机数就set /a a=%random%%%100就可以了啊。 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |