|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『楼 主』:
原创彩票选号器
使用 LLM 解释/回答一下
今天看到同事在为买彩票选号码,一时心血来潮写了这个P。由于本人不玩彩票,因此不熟悉其中的规则,肯定还有许多要改进的地方,就有劳有心人了。
(注:有个思路将以前的中奖号码全存进txt,在批处理中加入查找所选号码,如以前有的就重选一次)
提示:17楼为更新后的不生成临时文件并加入次数限制和密码认证的完善版
@echo off&color 5f&mode con cols=50 lines=8
title 彩票号码选取器
:begin
if exist n.txt del n.txt
cd. >n.txt
cls
set a=35
echo.&echo.&echo.
set /p a=请输入在多少个数中选择(默认回车为35):
set /a a=a+1
cls
set b=7
echo.&echo.&echo.
set /p b=请输入选择多少个数(默认回车为7):
for /l %%i in (1,1,%b%) do call :select
cls
set /p namber=<n.txt
find "%namber%" a.txt >nul
if errorlevel 1 goto show
if errorlevel 0 goto begin
:show
echo.&echo.&echo. >n.txt
echo 选择出的号码为:%namber% >>n.txt
type n.txt
pause&del n.txt
cls
echo.&echo.&echo.
echo 选择完毕,请按任意键退出!
pause >nul&goto :eof
:select
set /p str=<n.txt
set /a n=%random%%%a
if %n% equ 0 goto select
find "%n%" n.txt >nul
if errorlevel 1 echo %str%%n% >n.txt&goto :eof
if errorlevel 0 goto select
Last edited by zw19750516 on 2008-3-29 at 04:45 AM ]
|

批处理之家新域名:www.bathome.net |
|
2008-3-27 17:00 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-3-27 17:23 |
|
|
ansipeter
中级用户
   替身
积分 269
发帖 130
注册 2007-3-23
状态 离线
|
|
2008-3-27 17:52 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
Originally posted by ansipeter at 2008-3-27 17:52:
弱弱的问一句,能中奖吗?.......................
我写这个P只是为了好玩为了提高,不是为了中奖,彩票这东东我不玩的,呵呵呵。。。。
|

批处理之家新域名:www.bathome.net |
|
2008-3-27 18:23 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
使用set /a n=%random%%%a+1就可以得出1-35的数
修改一下不使用临时文件的脚本:
@echo off&color 5f&mode con cols=50 lines=8
title 彩票选号器
cls
set a=35
echo.&echo.&echo.
set /p a=请输入在多少个数中选择(默认回车为35):
cls
set b=7
echo.&echo.&echo.
set /p b=请输入选择多少个数(默认回车为7):
:loop
set /a n=%random%%%a+1
for %%i in ("%str%") do if "%n%" == "%%i" goto loop
set str=%str% %n%
set /a m+=1
if %m% lss %b% goto loop
cls
echo.&echo.&echo.
echo 选择出的号码为: %str%
pause>nul
cls
echo.&echo.&echo.
echo 选择完毕,请按任意键退出!
pause>nul
|

 |
|
2008-3-27 22:10 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第 6 楼』:
谢谢指点,又学了一招!
使用 LLM 解释/回答一下
但你好像忽视了数字为0的情况,应在:loop中加入对0的判断
:loop
set /a n=%random%%%a+1
if %n% equ 0 goto loop
for %%i in ("%str%") do if "%n%" == "%%i" goto loop
set str=%str% %n%
set /a m+=1
if %m% lss %b% goto loop
|

批处理之家新域名:www.bathome.net |
|
2008-3-27 22:21 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
你没看仔细,这句决不会出现小于1的数
set /a n=%random%%%a+1
你原来的set /a n=%random%%%a却不能产生最大数(如输入的35)
Last edited by zh159 on 2008-3-27 at 10:37 PM ]
|

 |
|
2008-3-27 22:36 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-3-27 22:40 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-3-28 12:00 |
|
|
26933062
银牌会员
    
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
for %%i in ("%str%") do if "%n%" == "%%i" goto loop
问题出在这里,%str% 不应该加引号
|

致精致简! |
|
2008-3-28 13:42 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第 11 楼』:
多谢26933062,向你学习!
使用 LLM 解释/回答一下
谢谢了,thank you very much,现修改如下:
@echo off&color 5f&mode con cols=50 lines=8
title 彩票选号器
cls
set a=35
echo.&echo.&echo.
set /p a=请输入在多少个数中选择(默认回车为35):
cls
set b=7
echo.&echo.&echo.
set /p b=请输入选择多少个数(默认回车为7):
:loop
set /a n=%random%%%a+1
for %%i in (%str%) do if "%n%" == "%%i" goto loop
set str=%str% %n%
set /a m+=1
if %m% lss %b% goto loop
cls
echo.&echo.&echo.
echo 选择出的号码为: %str%
pause>nul
cls
echo.&echo.&echo.
echo 选择完毕,请按任意键退出!
pause>nul
|

批处理之家新域名:www.bathome.net |
|
2008-3-28 13:51 |
|
|
tvzml
初级用户
 
积分 157
发帖 67
注册 2007-5-13
状态 离线
|
|
2008-3-28 13:52 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第 13 楼』:
加强版(加入了次数限制和认证密码):
使用 LLM 解释/回答一下
@echo off&color 5f&mode con cols=50 lines=8
title 彩票号码选取器
if exist a.txt goto run
echo 0 >a.txt
:run
echo.&echo.&echo.
set /p password=请输入进入密码:
if "%password%"=="cn-dos.net" goto begin
set /p a=<a.txt
set /a a+=1
set /a b=5-a
echo %a% >a.txt
if %a% geq 5 goto wrong
cls
echo.&echo.&echo.
echo 由于没正确输入密码,你仅能使用5次,现在还剩%b%次
ping /n 3 127.1 >nul
:begin
if exist n.txt del n.txt
cd. >n.txt
cls
set a=35
echo.&echo.&echo.
set /p a=请输入在多少个数中选择(默认回车为35):
cls
set b=7
echo.&echo.&echo.
set /p b=请输入选择多少个数(默认回车为7):
:loop
set /a n=%random%%%a+1
for %%i in (%str%) do if "%n%" == "%%i" goto loop
set str=%str% %n%
set /a m+=1
if %m% lss %b% goto loop
cls
echo.&echo.&echo.
echo 选择出的号码为: %str%
pause
cls
echo.&echo.&echo.
echo 选择完毕,请按任意键退出!
pause >nul&goto :eof
:wrong
cls
echo.&echo.&echo.
echo 对不起,你无权再使用本软件!
ping /n 3 127.1 >nul
goto :eof
Last edited by zw19750516 on 2008-3-28 at 02:40 PM ]
|

批处理之家新域名:www.bathome.net |
|
2008-3-28 14:35 |
|
|
terse
银牌会员
    
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第 14 楼』:
使用 LLM 解释/回答一下
Originally posted by zw19750516 at 2008-3-28 14:35:
@echo off&color 5f&mode con cols=50 lines=8
title 彩票号码选取器
if exist a.txt goto run
echo 0 >a.txt
:run
echo.&echo.&echo.
set /p password=请输入进入密 ...
实际上代码就是获得%n%个的不同随机数
代码里的对比判断有效率问题
不如这样处理:
set /p b=请输入选择多少个数(默认回车为7):
:loop
set /a n=%random%%%a+1
if defined %n% goto loop
set str=%str% %n%
set %n%=A
set /a m+=1
if %m% lss %b% goto loop
|

简单!简单!再简单! |
|
2008-3-28 20:08 |
|
|
kaikai163
初级用户
 
积分 107
发帖 60
注册 2007-11-7
状态 离线
|
|
2008-3-28 20:23 |
|