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

[数值计算] [分享]批处理做双色球随机算号器

最近一直在学习批处理,自己写了个双色球随机算号器,但总感觉不太舒服,写出来大家看看,希望大家多提建议,给予斧正。

本代码能完全模拟双色球摇奖程序,随机得到号码,再将代码进行排序,并支持多次重复摇号,并将不同的摇号结果写入到“必中.txt”中,你也可以自己选出一部分号码进行摇号,如果不输入初选号码,将默认所有的号码为你的预选号进行摇号。下面是批处理做双色球随机算号器的P代码:
  1. @echo off&setlocal Enabledelayedexpansion&mode con: cols=45 lines=18&color 0e
  2. :KaiShi
  3. cls&set /a nu=0&set shu=
  4. echo.&echo           ●●●双色球摇奖器●●●&echo.&echo       请输入你的预选号码,用逗号隔开!&echo.&echo 如果输入为空,将默认所有的号码为你的预选号!&echo.
  5. set /p shu=你的号码:
  6. if not "%shu%"=="" goto ZI
  7. set shu=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33
  8. :ZI
  9. set Hao=%shu%
  10. echo 你输入的预选号码:【%Hao%】>必中.txt&echo.>>必中.txt
  11. for %%i in (%shu%) do set /a nu+=1
  12. if %nu% lss 6 cls&cls&echo.&echo           ●●●双色球摇奖器●●●&echo.&echo 你输入的号码是:【%Hao%】&echo.&echo 输入的号码不能少于6个,按任意键重新输入!&pause>nul&goto KaiShi
  13. for %%i in (%shu%) do if %%i lss 17 goto XHp
  14. cls&echo.&echo           ●●●双色球摇奖器●●●&echo.&echo 你输入的号码是:【%Hao%】&echo.&echo 输入的号码中至少要有一个小于17!&echo.&echo 按任意键重新输入!&pause>nul&goto KaiShi
  15. :XHp
  16. for %%i in (%shu%) do if %%i GTR 33 cls&echo.&echo           ●●●双色球摇奖器●●●&echo.&echo 你输入的号码是:【%Hao%】&echo.&echo 有没有搞错?双色球有大于33的号???,按任意键重新输入!&pause>nul&goto KaiShi
  17. for %%a in (%shu%) do if 1%%a lss 20 (set shu0=!shu0!,0%%a) else set shu0=!shu0!,%%a
  18. set shu0=%shu0:~1%&set shu=%shu0%
  19. set /a o=0&set /a v=0
  20. :XH2
  21. set Qian=%Shu%&set /a n=0&set /a nu=0
  22. for %%i in (%shu%) do set /a nu+=1
  23. :XH
  24. set /a Rui=%random%%%nu%+1
  25. if %Rui% geq 31 Goto TT
  26. for /f "tokens=%Rui% delims=," %%i in ("%Qian%") do set f%n%=%%i&set "Qian=!Qian:%%i=!"&set "Qian=!Qian:,,=,!"
  27. set /a nu-=1&set /a n+=1
  28. if %n% LSS 6 goto XH
  29. Goto PP
  30. :TT
  31. set /a G=Rui-30
  32. for /f "tokens=30* delims=," %%i in ("%Qian%") do (
  33. for /f "tokens=%G% delims=," %%i in ("%%j") do set f%n%=%%i&set "Qian=!Qian:%%i=!"&set "Qian=!Qian:,,=,!"
  34. )
  35. set /a nu-=1&set /a n+=1
  36. if %n% LSS 6 goto XH
  37. :PP
  38. set HM=%f0% %f1% %f2% %f3% %f4% %f5%
  39. set Xiao=%shu%
  40. for %%i in (%Xiao%) do if %%i GTR 16 set "Xiao=!Xiao:%%i=!"&set "Xiao=!Xiao:,,=,!"
  41. set /a nx=0
  42. for %%i in (%Xiao%) do set /a nx+=1
  43. set /a Rui=%random%%%nx%+1
  44. for /f "tokens=%Rui% delims=," %%a in ("%Xiao%") do set f6=%%a
  45. set /a v+=1
  46. cls&echo.&echo           ●●●双色球摇奖器●●●&echo.&echo 第%v%次摇出的号码:&echo.&echo     摇出的号码:%HM% + %f6%&echo.
  47. set "m="
  48. (for %%j in (%HM%)do (set b=%%j&set "s="
  49. for %%i in (!m!)do (if %%j gtr %%i (
  50. set s=!s! %%i)else set s=!s! !b! %%i&set b=)
  51. set "m=!s! !b! "))&set "m=!m:  = !"
  52. set HM1=!m:~1,-1!
  53. echo   排序后的号码:%HM1% + %f6%&echo.&echo.&echo.&echo   按任意键重摇...&echo.&echo   结果保存在“必中.txt”中。&echo   排序后号码相同的将不保存。
  54. for /f "delims=" %%b in ('type "必中.txt"^|find /i "排序后的号码:%HM1% + %f6%"') do goto bubaoc
  55. set /a o+=1
  56. echo 第%v%次摇出第%o%次写入的号码:>>必中.txt&echo   摇出的号码:%HM% + %f6%>>必中.txt&echo 排序后的号码:%HM1% + %f6%>>必中.txt&echo.>>必中.txt
  57. :bubaoc
  58. pause>nul&goto XH2
复制代码
1

评分人数

天行健  君子以自强不息

全排列问题?
批处理虽然也可以做这些 但我觉得P的主要功能应该在于对win下文件的操作和处理(比如对当前目录下所有文本文件的处理之类的)
因为其他的语言可以比他更好解决数学问题
自己去找一下算法吧
其实数字少 用for...否则就回溯吧......
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

呃....我反正写不出来、、双色球是什么东东...

TOP

返回列表