[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 77七 于 2023-9-3 03:35 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set m=100000
  4. %1 (for /f "tokens=2 delims==" %%a in ('%0 rem^|sort') do ((set /p=%%a <nul)&(set /a n+=1,i=n %% 50)&(if !i! equ 0 (echo=))))>1.txt&pause&exit
  5. for /l %%k in (100,1,199) do (
  6.         set str=%%k
  7.         for /l %%l in (1,1,500) do (
  8.                 set /a m+=1
  9.                 echo !random!!m:~-6!=!str:~-2!
  10.         )
  11. )
复制代码

需要30秒
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 6# hfxiang


   楼主要求每行不重复
bat小白,请多指教!谢谢!

TOP

回复 8# hfxiang

观察下最后一行,测试两次,最后一行比较明显
就是每行内的数字不能重复
  
  1. 60 38 38 05 40 38 33 38 12 12 12 64 60 33 60 60 33 12 33 40 33 33 33 40 60 40 12 12 40 33 33 33 33 64 33 64 64 64 40 40 40 64 40 40 40 64 64 64 64 64
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2023-9-3 20:35 编辑

下午用定义行号和数字也写了个,但是在某一行,应该是出现有51个数已经用了500次...总是陷入死循环
WHY大佬直接将00-99一组分为两行,非常巧妙。
用批处理参考此思路也写了个,打乱排序需要2分钟,效率还是不行...,不打乱排序快点,
优化了下,打乱排序17秒
  1. @echo off
  2. %1 (for /f "tokens=2 delims==" %%a in ('%0 rem^|sort') do (echo %%a))>1.txt&pause&exit
  3. for /l %%l in (1001,1,1500) do (
  4. setlocal enabledelayedexpansion
  5. for /l %%k in (100,1,199) do (
  6. set str=%%k
  7. set #!random!#%%k=!str:~-2!
  8. )
  9. for /f "tokens=2 delims==" %%a in ('set #') do (
  10. set str2=%%a !str2!
  11. )
  12. echo !random!#%%l1=!str2:~0,149!
  13. echo !random!#%%l2=!str2:~150,149!
  14. endlocal
  15. )
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

如果对打乱排序后的结果,再处理,比如以两行为单位,随机排序这100个”数字“,每行不重复,让结果更随机一些,还挺有意思...感觉还是稍微有点难度...
  1. 35 70 39 96 45 26 79 86 40 72 92 46 31 68 95 71 65 73 58 90 29 89 10 82 50 42 94 84 01 34 17 93 06 32 74 07 44 76 37 08 55 47 53 22 23 88 13 16 66 19
  2. 55 02 23 30 70 56 53 42 25 33 48 29 79 09 66 98 24 80 11 94 93 13 61 73 40 43 68 67 51 76 26 37 19 59 35 75 95 96 90 63 22 64 69 97 41 15 54 77 86 83
复制代码


我抽取了结果的两行(不是互补的),在写,还没有写出来...
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2023-9-5 13:58 编辑

回复 33# 77七


   我写了个比较复杂的...
  1. @echo off
  2. >2.txt echo 35 70 39 96 45 26 79 86 40 72 92 46 31 68 95 71 65 73 58 90 29 89 10 82 50 42 94 84 01 34 17 93 06 32 74 07 44 76 37 08 55 47 53 22 23 88 13 16 66 19
  3. >>2.txt echo 55 02 23 30 70 56 53 42 25 33 48 29 79 09 66 98 24 80 11 94 93 13 61 73 40 43 68 67 51 76 26 37 19 59 35 75 95 96 90 63 22 64 69 97 41 15 54 77 86 83
  4. setlocal enabledelayedexpansion
  5. for /f "delims=" %%a in (2.txt) do (
  6.         for %%b in (%%a) do (
  7.                 set /a #%%b+=1
  8.         )
  9. )
  10. for /f "delims=" %%a in (2.txt) do (
  11.         for %%b in (%%a) do (
  12.                 if !#%%b! equ 2 (
  13.                         if not defined ##%%b (
  14.                                 set str1=%%b !str1!
  15.                                 set str2=%%b !str2!
  16.                                 set /a m+=1
  17.                                 set ##%%b=1
  18.                         )
  19.                 ) else (
  20.                         set /a n+=1
  21.                         set _!random!_!n!=%%b
  22.                 )
  23.         )
  24. )
  25. for /f "tokens=2 delims==" %%a in ('set _') do (
  26.         if !m! lss 50 (
  27.                 set str1=%%a !str1!
  28.                 set /a m+=1
  29.         ) else (
  30.                 set str2=%%a !str2!
  31.         )
  32. )
  33. call :1 "!str1!"
  34. call :1 "!str2!"
  35. pause & exit
  36.         :1
  37.         setlocal
  38.         for %%a in (%~1) do (
  39.                 set /a k+=1
  40.                 set @!random!_!k!=%%a
  41.         )
  42.         for /f "tokens=2 delims==" %%a in ('set @') do (
  43.                 set newstr=%%a !newstr!
  44.         )
  45.         echo !newstr!
  46.         endlocal
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

返回列表