标题: [数值计算] [已解决]批处理如何生成超过5位数的指定范围内的随机数 [打印本页]
作者: nbtnt 时间: 2016-10-15 19:29 标题: [已解决]批处理如何生成超过5位数的指定范围内的随机数
本帖最后由 pcl_test 于 2016-11-24 08:28 编辑
使用random时,
规定最大值为498000,最小值为88000
但是取出的随机数的最大值总在100000左右徘徊。
作者: aa77dd@163.com 时间: 2016-10-15 20:03
- @echo off & setlocal enableDelayedExpansion
- mode 80,2000
- for /L %%a in (1 1 1000) do (
- set /a "t=1088000 + (1!random:~-2!!random:~-4!-1000000) %% (498000-88000+1)"
- echo;!t:~-6!
- )
-
- pause
- exit /b
复制代码
回复 1# nbtnt
作者: pcl_test 时间: 2016-10-15 21:28
本帖最后由 pcl_test 于 2016-10-16 06:26 编辑
random返回的是基于系统时间生成的一个0~32767之间的随机整数
set /a的计算数值范围为-2^31~2^31-1,即-2147483648~2147483647- @echo off&setlocal enabledelayedexpansion
- rem 拆分拼接(8,8000)~(8,9999);(9,0000)~(9,9999);……(48,0000)~(48,9999);(49,0000)~(49,8000)
- (for /l %%a in (1 1 1000) do (
- set /a a=8+!random!%%42&rem 8~49
- if !a! equ 8 (
- set /a b=8000+!random!%%2000&rem 8000~9999
- echo;!a!!b!
- ) else (
- if !a! equ 49 (
- set /a b=10000+!random!%%8001&rem 10000~18000
- ) else (
- set /a b=10000+!random!%%10000&rem 10000~19999
- )
- echo;!a!!b:~1!
- )
- ))>result.txt
- pause
复制代码
作者: pcl_test 时间: 2016-10-15 21:43
本帖最后由 pcl_test 于 2016-10-15 23:46 编辑
- @echo off
- set min=88000
- set max=498000
- for /f "delims=" %%a in ('mshta "javascript:(new ActiveXObject('Scripting.Filesystemobject')).GetStandardStream(1).Write(Math.floor(Math.random()*(%max%-%min%+1)+%min%));close()"') do echo;%%a
- pause
复制代码
- rem win7及以上系统运行
- powershell -c "get-random -min 88000 -max 498001"
- pause
复制代码
作者: happy886rr 时间: 2016-10-16 10:23
- @echo off&setlocal enabledelayedexpansion
- REM 设置随机数位数
- set BITS=9
- for /l %%i in (1,1,200) do (
- set "s=$"
- for /l %%i in (1,1,!BITS!) do (
- set/a "r=!random!%%10"&set "s=!s!!r!"
- )
- set/p=!s!, <NUL
- set/a "n=%%i%%5"
- if !n! equ 0 (echo;)
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |