我如何生成一个七位数的随机数,它本身可以被七整除
How do I generate a seven digit random number which is itself divisible by seven
我正在编写一个程序,除一个部分外,所有部分都运行良好,该部分应该生成一个可被 7 整除的七位随机数。
我知道我也有类似的问题,但我没有在其中找到我的答案,尽管我尝试过,但我自己也只能生成这样一个数字。
知道怎么做吗?
您可以使用取模函数(参见set /?
):
@echo off
setlocal
set "number=%random%%random%%random%%random%%random%%random%%random%"
set "number=%number:~0,7%"
set /a remainder=number %% 7
if %remainder% equ 0 (
echo %number% is a multiple of 7
) else (
echo %number% divided by 7 gives a rest of %remainder%
)
以防万一,前导零 is/are 可以,甚至可能需要:
@echo off
setlocal
set "number=%random%%random%%random%%random%%random%%random%%random%"
set "number=%number:~-7%"
set /a remainder=7%number% %% 7
if %remainder% equ 0 (
echo %number% is a multiple of 7
) else (
echo %number% divided by 7 gives a rest of %remainder%
)
这里有一个稍微不同的方法,它被设计用来传播一个名为 D7
的变量,它有一个七位数的值,当它被七除时将 return 一个精确的整数:
第一个示例允许在结果值中使用前导 0
。
Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "D7="
For /L %%G In (0 1 9) Do For %%H In (
%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%
) Do (Set /A D7 = 7%%H%%G %% 7
SetLocal EnableDelayedExpansion & If !D7! Equ 0 (EndLocal
Set "D7=%%H%%G"
GoTo :Next))
:Next
Set D7
Pause
请注意:结果值可能是 0000000
,因为前导 0
是允许的,并且 0
可以被每个整数整除。
如果您不想使用前导 0
,则需要进行非常小的调整:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "D7="
For /L %%G In (1 1 9) Do For %%H In (
%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%
) Do (Set /A D7 = %%G%%H %% 7
SetLocal EnableDelayedExpansion & If !D7! Equ 0 (EndLocal
Set "D7=%%G%%H"
GoTo :Next))
:Next
Set D7
Pause
我正在编写一个程序,除一个部分外,所有部分都运行良好,该部分应该生成一个可被 7 整除的七位随机数。
我知道我也有类似的问题,但我没有在其中找到我的答案,尽管我尝试过,但我自己也只能生成这样一个数字。
知道怎么做吗?
您可以使用取模函数(参见set /?
):
@echo off
setlocal
set "number=%random%%random%%random%%random%%random%%random%%random%"
set "number=%number:~0,7%"
set /a remainder=number %% 7
if %remainder% equ 0 (
echo %number% is a multiple of 7
) else (
echo %number% divided by 7 gives a rest of %remainder%
)
以防万一,前导零 is/are 可以,甚至可能需要:
@echo off
setlocal
set "number=%random%%random%%random%%random%%random%%random%%random%"
set "number=%number:~-7%"
set /a remainder=7%number% %% 7
if %remainder% equ 0 (
echo %number% is a multiple of 7
) else (
echo %number% divided by 7 gives a rest of %remainder%
)
这里有一个稍微不同的方法,它被设计用来传播一个名为 D7
的变量,它有一个七位数的值,当它被七除时将 return 一个精确的整数:
第一个示例允许在结果值中使用前导 0
。
Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "D7="
For /L %%G In (0 1 9) Do For %%H In (
%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%
) Do (Set /A D7 = 7%%H%%G %% 7
SetLocal EnableDelayedExpansion & If !D7! Equ 0 (EndLocal
Set "D7=%%H%%G"
GoTo :Next))
:Next
Set D7
Pause
请注意:结果值可能是 0000000
,因为前导 0
是允许的,并且 0
可以被每个整数整除。
如果您不想使用前导 0
,则需要进行非常小的调整:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "D7="
For /L %%G In (1 1 9) Do For %%H In (
%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%%Random:~-1%
) Do (Set /A D7 = %%G%%H %% 7
SetLocal EnableDelayedExpansion & If !D7! Equ 0 (EndLocal
Set "D7=%%G%%H"
GoTo :Next))
:Next
Set D7
Pause