标题: [文本处理] [已解決]批处理如何最有效率的打乱字符重新排序? [打印本页]
作者: strong12345 时间: 2009-9-27 12:30 标题: [已解決]批处理如何最有效率的打乱字符重新排序?
本帖最后由 pcl_test 于 2017-6-19 12:15 编辑
例如有变量 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
希望能将他随机打乱顺序
例如变成 Q R S C D E F G A B I J K L M N O P T U V W X Y Z H
小弟是有想过是用 %random% %% 变量数 一直反去取变量排序,但是这样觉得很没有效率
500个变量就要重排500次
请问有没有更好得方法?
[ 本帖最后由 strong12345 于 2009-10-17 02:24 编辑 ]
作者: Batcher 时间: 2009-9-27 14:48
先把你的完整代码贴出来看看?
作者: wxcute 时间: 2009-9-27 15:07
记得论坛前辈有很好的方法,忘记是谁的思路了。- @echo off
- setlocal enabledelayedexpansion
- set "str=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"
- for %%i in (%str%)do set _!random!=%%i
- for /f "tokens=2 delims==" %%a in ('set _')do set "show=!show! %%a"
- echo %show%
- pause
复制代码
作者: strong12345 时间: 2009-10-8 11:50
小弟没有写出完整的代码,只是一直在思考方法
想到的方法也没有很理想的
不过冰疼版主的代码很不错
感谢了!
研究一下..
作者: strong12345 时间: 2009-10-8 12:09
- for /f "tokens=2 delims==" %%a in ('set _')do set "show=!show! %%a"
复制代码
這句不是很懂...?复制代码
[ 本帖最后由 strong12345 于 2009-10-8 12:11 编辑 ]
作者: strong12345 时间: 2009-10-8 12:13
我懂了= =....
這方法很不錯!!
作者: 523066680 时间: 2009-10-8 12:13
嘿嘿,批处理是很有个性的,
因为其他语言没有批处理的这个个性。所以还有一个方法~
http://bbs.bathome.net/viewthread.php?tid=3733 4楼
wxcute小心%random%数字重复造成的替换哦~ 量大的时候就容易缺失。
作者: strong12345 时间: 2009-10-8 12:22
嗯 看了 523066680 大大提供的連結
此篇寫得很不錯
討論可能重複性的問題
前輩們也有提出改善的代碼
作者: terse 时间: 2009-10-8 12:39
- @echo off&setlocal enabledelayedexpansion
- set "str=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- for /l %%a in (26 -1 2) do (
- set /a n=!random!%%%%a
- for %%b in (!n!) do for %%c in ("!str:~%%b,1!") do (
- set var=!var!%%~c&set str=!str:%%~c=!
- ))
- echo !var!!str!
- pause
复制代码
作者: Seter 时间: 2009-10-17 08:47
- @echo off&setlocal enabledelayedexpansion&set "t=ABCDEFGHIJKLMNOPQRSTUVWXYZ"&set n=26
- for /l %%m in (0,1,50) do set/ar=!random!%%%n%&set/as=!r!+1&call,set t=%%t:~!r!,1%%%%t:~,!r!%%%%t:~!s!%%
- echo %t%&pause
复制代码
效率高的被人抢了 ...
糟糕,似乎没看见LS的代码...不会撞了把...
[ 本帖最后由 Seter 于 2009-10-17 08:49 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |