标题: [数值计算] 怎么用批处理生成随机不重复的数字1~10 [打印本页]
作者: 502283644 时间: 2015-3-4 21:54 标题: 怎么用批处理生成随机不重复的数字1~10
本帖最后由 pcl_test 于 2016-11-18 17:03 编辑
例如:
5
2
3
1
4
6
9
8
10
7
作者: pcl_test 时间: 2015-3-4 22:20
回复 1# 502283644 - @echo off
- for /l %%a in (1,1,10) do call echo %%random:~-1%%#%%a >>$
- for /f "tokens=1* delims=#" %%b in ('type $ ^|sort') do echo %%c
- del $
- pause
复制代码
作者: cobat 时间: 2015-3-4 22:21
本帖最后由 cobat 于 2015-3-11 13:32 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /l %%a in (1,1,10) do set _%%a=%%a
- for /l %%a in (10,-1,1) do (
- set /a mod=!random!%%%%a+1
- for %%b in (!mod!) do echo !_%%b!
- set/a _!mod!=_%%a
- )
- pause
复制代码
- @echo off
- setlocal enabledelayedexpansion
- for /l %%a in (1,1,10) do set _!random!_%%a=%%a
- for /f "tokens=2 delims==" %%a in ('set _') do echo %%a
- pause
复制代码
作者: 502283644 时间: 2015-3-5 21:31
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%z in (%1) do (set /a b+=1)
- for /l %%a in (1,1,%b%) do call echo %%random:~-1%%#%%a >>$
- for /f "tokens=1* delims=#" %%b in ('type $ ^|sort') do echo %%c>>1.ini
- del $
- pause
复制代码
回复 2# pcl_test
为什么不行?
作者: pcl_test 时间: 2015-3-5 21:40
本帖最后由 pcl_test 于 2015-3-7 17:12 编辑
回复 4# 502283644 - @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%z in ('type %1') do (set /a b+=1)
- for /l %%a in (1,1,!b!) do echo !random:~-1!#%%a >>$
- for /f "tokens=1* delims=#" %%b in ('type $ ^|sort') do echo %%c>>1.ini
- del $
- pause
复制代码
作者: xxpinqz 时间: 2015-3-6 10:23
3楼的第二个代码可行啊
作者: 慕夜蓝化 时间: 2015-3-13 10:51
- @echo off&setlocal enabledelayedexpansion
- set n=0123456789
- for /l %%i in (0 1 9) do (
- set/a a=!random!%%(10-%%i^)
- for %%a in (!a!) do (
- if "!n:~%%a,1!"=="0" (
- echo,10
- ) else (
- echo,!n:~%%a,1!
- )
- set u=!n:~%%a,1!
- )
- for %%a in (!u!) do set n=!n:%%a=!
- )
- pause
复制代码
作者: 慕夜蓝化 时间: 2015-3-13 11:02
- @echo off&setlocal enabledelayedexpansion
- for /l %%i in (1 1 10) do set _!RANDOM!=%%i
- for /f "tokens=2 delims==" %%i in ('set _') do echo,%%i
- pause
复制代码
作者: terse 时间: 2015-3-13 20:45
- @echo off&setlocal enabledelayedexpansion
- set m=10
- for /L %%i in (1,1,%m%) do set $%%i=%%i
- :start
- for /L %%i in (%m%,-1,1) do (
- set /a n=!random!%%%%i+1
- for %%j in (!n!) do set /a $%%i=$%%j,$%%j=!$%%i!
- echo !$%%i!
- )
- pause
- goto start
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |