[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 怎么用批处理生成随机不重复的数字1~10

本帖最后由 pcl_test 于 2016-11-18 17:03 编辑

例如:
5
2
3
1
4
6
9
8
10
7

回复 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
复制代码

TOP

本帖最后由 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
复制代码

TOP

  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


    为什么不行?

TOP

本帖最后由 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
复制代码

TOP

3楼的第二个代码可行啊
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

  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
复制代码
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

  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
复制代码
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

  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
复制代码

TOP

返回列表