标题: [数值计算] [已解决]求这个随机数的批处理的详细解释 [打印本页]
作者: 597476418 时间: 2011-8-13 13:16 标题: [已解决]求这个随机数的批处理的详细解释
本帖最后由 597476418 于 2011-8-13 19:23 编辑
- @echo off
- setlocal enabledelayedexpansion
- set /a str=123456789
- for /l %%i in (1 1 10) do (
- set /a num=!random! %% 9+1
- call set str=%%str:!num!=%%!num!
- )
- echo !str:~2,4!
- pause
复制代码
作者: CUer 时间: 2011-8-13 13:31
运行这个代码看看,具体哪里不懂就再问。- setlocal enabledelayedexpansion
- set /a str=123456789
- for /l %%i in (1 1 10) do (
- set /a num=!random! %% 9+1
- echo !num!
- call set str=%%str:!num!=%%!num!
- echo !str!
- pause
- )
- echo !str:~2,4!
- pause
复制代码
作者: CrLf 时间: 2011-8-13 13:32
本帖最后由 CrLf 于 2011-8-13 13:33 编辑
- @echo off
- setlocal enabledelayedexpansion
- set /a str=123456789
- for /l %%i in (1 1 10) do (
- rem 循环十次
- set /a num=!random! %% 9+1
- rem 设置num的值为1~9的随机数
- call set str=%%str:!num!=%%!num!
- rem 把 str 变量中对对应数字放到最后
- )
- echo !str:~2,4!
- pause
复制代码
作用是随机打乱字符串顺序,但是这条代码在循环中使用 call,导致效率低下,除非是不得已或者特殊情况才这么用
改进:- @echo off
- setlocal enabledelayedexpansion
- set /a str=123456789
- for /l %%i in (9 -1 1) do (
- set /a num=!random! %% %%i,next=num+1
- for /f "tokens=1,2" %%x in ("!num! !next!") do set str=!str:~,%%x!!str:~%%y!!str:~%%x,1!
- rem 不使用变量替换,而改用偏移
- )
- echo !str:~2,4!
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |