Board logo

标题: [数值计算] 怎么用批处理生成随机不重复的数字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
  1. @echo off
  2. for /l %%a in (1,1,10) do call echo %%random:~-1%%#%%a >>$
  3. for /f "tokens=1* delims=#" %%b in ('type $ ^|sort') do echo %%c
  4. del $
  5. pause
复制代码

作者: cobat    时间: 2015-3-4 22:21

本帖最后由 cobat 于 2015-3-11 13:32 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (1,1,10) do set _%%a=%%a
  4. for /l %%a in (10,-1,1) do (
  5.     set /a mod=!random!%%%%a+1
  6.     for %%b in (!mod!) do echo !_%%b!
  7.     set/a _!mod!=_%%a
  8. )
  9. pause
复制代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (1,1,10) do set _!random!_%%a=%%a
  4. for /f "tokens=2 delims==" %%a in ('set _') do echo %%a
  5. pause
复制代码

作者: 502283644    时间: 2015-3-5 21:31

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%z in (%1) do (set /a b+=1)
  4. for /l %%a in (1,1,%b%) do call echo %%random:~-1%%#%%a >>$
  5. for /f "tokens=1* delims=#" %%b in ('type $ ^|sort') do echo %%c>>1.ini
  6. del $
  7. pause
复制代码
回复 2# pcl_test


    为什么不行?
作者: pcl_test    时间: 2015-3-5 21:40

本帖最后由 pcl_test 于 2015-3-7 17:12 编辑

回复 4# 502283644
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%z in ('type %1') do (set /a b+=1)
  4. for /l %%a in (1,1,!b!) do echo !random:~-1!#%%a >>$
  5. for /f "tokens=1* delims=#" %%b in ('type $ ^|sort') do echo %%c>>1.ini
  6. del $
  7. pause
复制代码

作者: xxpinqz    时间: 2015-3-6 10:23

3楼的第二个代码可行啊
作者: 慕夜蓝化    时间: 2015-3-13 10:51

  1. @echo off&setlocal enabledelayedexpansion
  2. set n=0123456789
  3. for /l %%i in (0 1 9) do (
  4.     set/a a=!random!%%(10-%%i^)
  5.     for %%a in (!a!) do (
  6.         if "!n:~%%a,1!"=="0" (
  7.             echo,10
  8.         ) else (
  9.             echo,!n:~%%a,1!
  10.         )
  11.     set u=!n:~%%a,1!
  12.     )
  13.     for %%a in (!u!) do set n=!n:%%a=!
  14. )
  15. pause
复制代码

作者: 慕夜蓝化    时间: 2015-3-13 11:02

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 10) do set _!RANDOM!=%%i
  3. for /f "tokens=2 delims==" %%i in ('set _') do echo,%%i
  4. pause
复制代码

作者: terse    时间: 2015-3-13 20:45

  1. @echo off&setlocal enabledelayedexpansion
  2. set m=10
  3. for /L %%i in (1,1,%m%) do set $%%i=%%i
  4. :start
  5. for /L %%i in (%m%,-1,1) do (
  6.     set /a n=!random!%%%%i+1
  7.     for %%j in (!n!) do set /a $%%i=$%%j,$%%j=!$%%i!
  8.     echo !$%%i!
  9. )
  10. pause
  11. goto start
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2