批 - 随机数的东西

时间:2013-01-25 09:36:27

标签: random batch-file

我正在尝试创建一个组成随机DOB的批处理文件。

@echo off
title Random DOB Generator!
echo Working...
echo.
:loop
set dd=%random%
if "%dd%" GTR 31 goto loop
if "%dd%" LSS 1 goto loop
:loop2
echo %dd%/??/????
echo.
:loop2a
set mm=%random%
if "%mm%" GTR 12 goto loop2a
if "%mm%" LSS 1 goto loop2a
:loop3
echo %dd%/%mm%/????
echo.
:loop3a
set yyyy=%random%
if "%yyyy%" GTR 2000 goto loop3a
if "%yyyy%" LSS 1900 goto loop3a
:win
echo.
echo Result: %dd%/%mm%/%yyyy%
pause > nul
exit

但它没有做任何事情,只是坐在那里。我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

问题在于如何生成随机数。

%random%返回0到32767之间的数字,因此尝试生成1到31,1和12之间,1900年和2000之间的数字需要一些时间。

这不是什么都不做,只是花了这么长时间才找到匹配的数字。

您可以使用一些数学来查找某个范围之间的数字,因此您无需等待。

@echo off
title Random DOB Generator!
echo Working...
echo.
set /a dd=%random% * 31 / 32768 + 1
echo %dd%/??/????
echo.
set /a mm=%random% * 12 / 32768 + 1
echo %dd%/%mm%/????
echo.
set /a yyyy=%random% * (2000 - 1900 + 1) / 32768 + 1900
echo.
echo Result: %dd%/%mm%/%yyyy%
pause >nul
exit

如果您从原始脚本中取消@echo off,我认为您会看到它为查找匹配项生成了多少个数字:)