中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 14:57
47,811 主题排行 / 349,896 发帖 / 今日 1 篇 / 48,254 会员排行
DOS批处理 & 脚本技术(批处理室) » 出给新手的加分题-随机取值
可打印版本  2,068 / 24
第1楼 bat-zw 发表于 2008-08-24 10:32
金牌会员 发帖 1,276 积分 3,105
出给新手的加分题-随机取值
好久没有出过题了,今天来一出给新手的题,老手们还请略过了:
题目:
现有a-z和1-26的一一对应,现在要求用批处理从1-26和a-z 52个值
(全视为值)中随机取得10个不同的值,如1和a 26和z视为相同的值
要求:
代码高效、简洁、通用、并不生成临时文件
加分:
代码完全符合要求的加10分
第2楼 bat-zw 发表于 2008-08-24 14:29
金牌会员 发帖 1,276 积分 3,105
看来现在是要代码的多,真的抱着学习目的来的少,唉。。。
第3楼 pusofalse 发表于 2008-08-24 14:58
银牌会员 发帖 646 积分 1,604
感叹。。人气不盛。。
第4楼 dragonamd 发表于 2008-08-24 15:31
中级用户 发帖 100 积分 209
难度太大,理解不够,。吃不消,本人并不是为了代码而来
第5楼 dragonamd 发表于 2008-08-24 15:33
中级用户 发帖 100 积分 209
本人愚钝,真心拜师,喜欢收徒的来!
第6楼 523066680 发表于 2008-08-24 16:26
银牌会员 发帖 1,133 积分 2,362
真不好决策呢……虽然很想搬上来 但我算不算老手啊
第7楼 523066680 发表于 2008-08-24 16:46
银牌会员 发帖 1,133 积分 2,362
我再加一水贴,哎没办法 有一部分人都往bathome过渡哦
第8楼 holee 发表于 2008-08-24 17:54
初级用户 发帖 27 积分 53
感觉难度比较高啊。。。唉。。继续我的蜗牛学习之路。。
第9楼 kghong 发表于 2008-08-24 19:18
初级用户 发帖 13 积分 26
dos盲.有难度呀.慢慢来
第10楼 bat-zw 发表于 2008-08-24 19:29
金牌会员 发帖 1,276 积分 3,105
提示:多在这个一一对应上做文章
第11楼 BC 发表于 2008-08-24 22:52
中级用户 发帖 175 积分 338
我晕,没想到那么难...

[ Last edited by BC on 2008-8-25 at 08:32 AM ]
第12楼 daker 发表于 2008-08-24 23:51
初级用户 发帖 17 积分 34
@echo off
setlocal EnableDelayedExpansion
set nu=a b c d e f g h i j k l m n o p q r s t u v w x y z
set n=0
:_loop
if %n% geq 10 (goto _end)
set /a n=%n%+1
set /a unx=%random%%%26+1
for /f "tokens=%unx% delims= " %%i in ('echo %nu%')do echo %n% %%i %unx%
goto _loop
:_end

是这个样子???
还是set nu= a-z + 1-26
set unx=%random%%%52+1 ????

[ Last edited by daker on 2008-8-25 at 12:06 AM ]
第13楼 pusofalse 发表于 2008-08-25 01:21
银牌会员 发帖 646 积分 1,604
楼主的意思是如果已经出现了3,就不能再出现3,不能出现c。
a-1 b-2 c-3。。。 都是一一对应的。
第14楼 BC 发表于 2008-08-25 08:53
中级用户 发帖 175 积分 338
@echo off
setlocal enabledelayedexpansion
set num=1234567890
set wor=abcdefghijklmnopqrstuvwxyz
:a1
set /a var1=%random%%%26+1
set /a var2=%random%%%9+1
if %var1% equ %var2% (goto :a1)
if %var1% lss 1 ( goto :a1 )
set key1=!wor:~%var1%,9!
set key2=!num:~%var2%,1!
echo %key1%%key2%
pause

搞了个很偷懒的方法,而且也不是很符合题意,但小弟的能力就是那么多。。。
希望有高人指点...
第15楼 qq152576450 发表于 2008-08-25 10:15
新手上路 发帖 3 积分 6 来自 川
@echo off
Setlocal Enabledelayedexpansion
set _w=0abcdefghijklmnopqrstuvwxyz
set _p=0
for /l %%i in (1 1 26) do (set w%%i=!_w:~%%i,1!
set _w%%i=%%i)
:xz
set /a _p+=1
if %_p%==11 goto show
set /a xzx=%random%%%2
set /a xzp=%random%%%26+1
if %xzx%==0 set show%_p%=%xzp%
if %xzx%==1 set show%_p%=!w%xzp%!
goto xz
:show
for /l %%i in (1,1,10) do set /p =!show%%i! <nul
pause>nul
但不能判断是否重复....
望前辈指教
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023