中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-09 15:51
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 出给新手的加分题-随机取值 查看 2,073 回复 24
楼 主 出给新手的加分题-随机取值 发表于 2008-08-24 10:32 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
好久没有出过题了,今天来一出给新手的题,老手们还请略过了:
题目:
现有a-z和1-26的一一对应,现在要求用批处理从1-26和a-z 52个值
(全视为值)中随机取得10个不同的值,如1和a 26和z视为相同的值
要求:
代码高效、简洁、通用、并不生成临时文件
加分:
代码完全符合要求的加10分
批处理之家新域名:www.bathome.net
2 发表于 2008-08-24 14:29 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
看来现在是要代码的多,真的抱着学习目的来的少,唉。。。
批处理之家新域名:www.bathome.net
3 发表于 2008-08-24 14:58 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
感叹。。人气不盛。。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
4 发表于 2008-08-24 15:31 ·  中国 江苏 苏州 电信
中级用户
★★
积分 209
发帖 100
注册 2008-08-01 02:53
18年会员
UID 122532
性别 男
状态 离线
难度太大,理解不够,。吃不消,本人并不是为了代码而来
5 发表于 2008-08-24 15:33 ·  中国 江苏 苏州 电信
中级用户
★★
积分 209
发帖 100
注册 2008-08-01 02:53
18年会员
UID 122532
性别 男
状态 离线
本人愚钝,真心拜师,喜欢收徒的来!
6 发表于 2008-08-24 16:26 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
真不好决策呢……虽然很想搬上来 但我算不算老手啊
7 发表于 2008-08-24 16:46 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
我再加一水贴,哎没办法 有一部分人都往bathome过渡哦
8 发表于 2008-08-24 17:54 ·  中国 广东 深圳 电信
初级用户
积分 53
发帖 27
注册 2005-07-18 20:40
21年会员
UID 40849
状态 离线
感觉难度比较高啊。。。唉。。继续我的蜗牛学习之路。。
9 发表于 2008-08-24 19:18 ·  中国 江苏 常州 电信
初级用户
积分 26
发帖 13
注册 2006-09-24 22:38
19年会员
UID 63566
状态 离线
dos盲.有难度呀.慢慢来
10 发表于 2008-08-24 19:29 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
提示:多在这个一一对应上做文章
批处理之家新域名:www.bathome.net
11 发表于 2008-08-24 22:52 ·  中国 广东 江门 电信
中级用户
★★
积分 338
发帖 175
注册 2007-10-21 15:30
18年会员
UID 100351
性别 男
状态 离线
我晕,没想到那么难...

[ Last edited by BC on 2008-8-25 at 08:32 AM ]
12 发表于 2008-08-24 23:51 ·  中国 陕西 西安 电信
初级用户
积分 34
发帖 17
注册 2007-05-23 10:55
19年会员
UID 89042
性别 男
状态 离线
@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 发表于 2008-08-25 01:21 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
楼主的意思是如果已经出现了3,就不能再出现3,不能出现c。
a-1 b-2 c-3。。。 都是一一对应的。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
14 发表于 2008-08-25 08:53 ·  中国 广东 江门 电信
中级用户
★★
积分 338
发帖 175
注册 2007-10-21 15:30
18年会员
UID 100351
性别 男
状态 离线
@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 发表于 2008-08-25 10:15 ·  中国 四川 成都 电信
新手上路
新手上路
积分 6
发帖 3
注册 2008-08-21 22:15
17年会员
UID 123813
性别 男
来自 川
状态 离线
@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
但不能判断是否重复....
望前辈指教
论坛跳转: