标题: 批处理如何产生一个100-200 之间的随机数? [打印本页]
作者: youxi01 时间: 2008-1-3 23:16 标题: 批处理如何产生一个100-200 之间的随机数?
题目如题。
要求:方法不限,达到目的即可。
作者: 随风 时间: 2008-1-7 12:43
代码内容,设置的颜色为white,防止答案轻易泄露
显示方法 1:按住鼠标左键,框住代码即可。
显示方法 2:点击代码右上角的“复制内容到剪贴板”也可。- @echo off
- set /a w=%random%%%100+100
- echo %w%
- pause
复制代码
高亮(反选)显示代码
[ 本帖最后由 随风 于 2008-1-7 19:55 编辑 ]
作者: zhangxiaopeng 时间: 2008-4-4 10:32
后面为什么要加三个%%%呢??
作者: youxi01 时间: 2008-4-4 10:41
呵呵,他的写法有点点“怪”
写成这个样子你就明白了:
set /a w=%random% %% 100+100
作者: ieutk 时间: 2008-4-28 23:04
- @echo off
- :loop
- set /a w=%random%%%101+100
- echo %w%
- pause
- goto loop
复制代码
作者: tangfu 时间: 2008-6-8 22:31
xp命令行下面的random变量范围是多少?
是不是最多5位,另外,它会不会是负数
作者: 随风 时间: 2008-6-8 22:40
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
作者: tangfu 时间: 2008-6-9 09:13
没想到这么快就有人回复了,是个不错的论坛哈!
作者: 421062724 时间: 2008-7-12 22:50
原来是这样,我以前都不知道,也曾经考虑过怎么实现,但如果没这个的话,我不会弄,呵呵
作者: z_berry 时间: 2008-9-2 18:41
看看大家的评论
作者: kingsgame 时间: 2008-9-3 21:43
新手进来学习学习random~
还没有学过这个参数
作者: SmallK 时间: 2008-9-4 00:49
多写了几句,方便测试一点。- @echo off
- :start
- cls
- set /a num=%random%%%101+100
- echo 本次在规定范围内产生的随机数为%num%
- pause
- goto start
复制代码
作者: SmallK 时间: 2008-9-4 00:53
原帖由 随风 于 2008-1-7 12:43 发表
代码内容,设置的颜色为white,防止答案轻易泄露
显示方法 1:按住鼠标左键,框住代码即可。
显示方法 2:点击代码右上角的“复制内容到剪贴板”也可。@echo off
set /a w=%random%%%100+100
echo %w%
pause高亮 ...
随风,你的变量计算公式还差那么一点点吧~~
作者: jellyhk 时间: 2008-9-5 08:41
这问题我不知道!!
学习西!!!
作者: bighead1984 时间: 2008-9-6 22:20
好东西 学习中 呵呵
作者: 3399kl 时间: 2008-9-12 13:19
就知道生成随机数%random%,学习
作者: batbird 时间: 2008-9-12 14:43
- @echo off
- :redo
- set num=%random%
- if %num% lss 100 goto redo
- if %num% gtr 200 goto redo
- echo %num%
- set num=
- pause>nul
复制代码
-------------------------------------------------------------------------------------
还是set /a w=%random%%%100+100这个简洁
[ 本帖最后由 batbird 于 2008-9-12 15:06 编辑 ]
作者: wxcute 时间: 2008-9-15 12:57
切成两段,没有200- @echo off
- :eo
- cls
- echo 1%random:~-2%
- pause
- goto :eo
复制代码
作者: lovelymorning 时间: 2008-9-28 19:52
原帖由 wxcute 于 2008-9-15 12:57 发表
切成两段,没有200@echo off
:eo
cls
echo 1%random:~-2%
pause
goto :eo
%random:~-2%
不妥吧,如果随机出来的是一位数呢?那 %random:~-2% 不就出错了???
作者: wxcute 时间: 2008-10-1 19:32 标题: 回复19数,确实是,多谢指正。
改成如下- @echo off
- :eo
- cls
- echo 1%random:~-1%%random:~-1%
- pause
- goto :eo
复制代码
作者: firewolf85 时间: 2008-12-6 13:10
set /a num=%random%%%100+100
作者: firewolf85 时间: 2008-12-6 13:28
对代码- set /a num=%random%%%100+100
复制代码
测试发现小问题一个,不能得到200,数值范围为100-199
将代码修改为- set /a num=%random%%%101+100
复制代码
可以得到完整的100-200
[ 本帖最后由 firewolf85 于 2008-12-6 13:40 编辑 ]
作者: suqili56 时间: 2008-12-6 13:47 标题: 不知道这样对不对
@echo off
set a=%random%
set /a n=%a%%%100*2
echo %n%
pause
作者: firewolf85 时间: 2008-12-7 15:11
原帖由 suqili56 于 2008-12-6 13:47 发表
@echo off
set a=%random%
set /a n=%a%%%100*2
echo %n%
pause
楼上这个输出的貌似都是偶数吧
作者: qqha001 时间: 2008-12-12 11:23
@echo off
set /a a=%random%%%101+100
echo %a%
pause
作者: qqha001 时间: 2008-12-12 11:25 标题: 回复 2楼 的帖子
这个能取到200吗?好像是100到199吧
作者: Batcher 时间: 2008-12-12 13:19 标题: 回复 26楼 的帖子
你是正确的
作者: steven007 时间: 2008-12-19 09:30
我也来学习一下:
@echo off
color 1a &mode con cols=35 lines=10
:loop
cls
set /a w=%random% %%101+100
echo.&echo.&echo.&echo.
echo 产生的随机数是:%w%
ping -n 2 127.1>nul
goto loop
作者: denev2004 时间: 2009-1-28 17:30
=====看来我的想法太复杂了
我想的方法是先random%%200然后把小于100的用if语句给剔除掉. .. .
作者: keen 时间: 2009-3-29 22:57
没有200:
- @echo off
- :start
- cls
- set /a a=%random%%%10
- set /a b=%random%%%10
- echo 1%a%%b%
- pause&goto start
复制代码
作者: woxingwoshu007 时间: 2009-3-30 21:09
@echo off
:liao
set /a hai=%random% %%101+100
echo %hai%
pause>nul
goto liao
作者: energy2009 时间: 2009-4-9 21:57
- @echo off
- :m
- set a=%random%
- set/a b=%a% %%2
- if %b%==0 goto m else goto next
- :next
- set c=%a:~1,2%
- echo %b%%c%
- ping -n 3 127.1>nul 2>nul&exit
复制代码
作者: jackelijie135 时间: 2009-4-9 23:54
- @echo off
- :start
- set/a n=%random%%%200
- if %n% lss 100 set/a n=%n%+100
- echo.%n%
- pause
- goto start
复制代码
嘿嘿,这样算不算投机取巧
作者: jackelijie135 时间: 2009-4-9 23:58 标题: 回复 2楼 的帖子
貌似是100--199的随机数吧
作者: sjzong 时间: 2009-4-12 00:47
我也是昨天才弄懂这个随机数的产生的!!
作者: qjfke 时间: 2009-4-13 15:45
那个 %% 101+100是什么意思
作者: Batcher 时间: 2009-4-13 18:16 标题: 回复 36楼 的帖子
数值计算:先对101取余,再加上100。
作者: qjfke 时间: 2009-4-13 20:42
%% 是取余哦,怎么单独用没有法哦, ,我不会,谢谢
作者: Batcher 时间: 2009-4-14 15:52 标题: 回复 38楼 的帖子
如果有人能明白你的“怎么单独用没有法哦”是什么意思,也许你的问题将会得到解答。
作者: aiguozhe 时间: 2010-1-30 17:54
@echo off
set /a a=%random% %% 101+100
echo %a%
pause>nul
%0%
这个不难,就进上一笔吧
作者: zdsg2001 时间: 2010-1-30 20:33
@echo off
:ks
cls
set n=1%random:~0,2%
echo 100至200之间的数字有(包括100)
echo %n%
pause>nul
goto ks
作者: wgoxm521 时间: 2010-1-31 05:25
wxcute 和 keen的代码好。
思想就是分割到 单个整体 模块化。
呵呵。你们c和c++都很好吧。
作者: Kenmick 时间: 2010-2-24 17:44
- @echo off
- set /a a=%random% %%101+100
- echo %a%
- pause>nul
- %0
复制代码
作者: cnbat 时间: 2010-3-25 22:15
num=%random%%%101+100
谁能详细解释下这句啊
作者: 634175535 时间: 2010-4-25 17:29
这个不太懂,请高手赐教!
作者: wangqi0077 时间: 2010-5-4 19:36
想了半天没明白,问了下别人才发现原来是用取余数的方法...
作者: zhenglj 时间: 2010-5-4 21:45
原帖由 随风 于 2008-6-8 22:40 发表
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
- @echo off
- setlocal enabledelayedexpansion
- :a
- set /a ran=%random%
- if %ran% gtr 32723 (goto a)
- set /a var=%ran%%%101+100
- echo %var%
- pause
- cls
- goto a
复制代码
感觉这样子合理一些
[ 本帖最后由 zhenglj 于 2010-5-6 23:18 编辑 ]
作者: mangci 时间: 2010-5-6 23:19
- @ echo off
- :late
- set /a num=%random%%%200
- if %num% gtr 100 (echo %num%) else (goto late)
- pause
复制代码
作者: zhiyanzhai33 时间: 2010-5-7 20:59
100-200的理解是?如果是包含100和200,代码如下:
-
- @echo off
- :loop
- cls
- set /a r=100+%random%%%101
- echo %r%
- pause
- goto :loop
复制代码
作者: lianjl 时间: 2010-5-8 17:30
好东西。学习!偶也试一下:
@echo off
:start
set /a w=%random% %% 101+100
echo %w%
pause
goto start
作者: middlelaw 时间: 2010-5-11 18:40
@echo off
:loop
set /a m=%random%%%100+100
echo %m%
pause
goto loop
作者: poxi 时间: 2010-7-19 19:28
答:- @echo off
- :start
- set /a mun=%random%%%200
- if %mun% lss 100 goto start else (
- echo %mun%
- )
- pause
复制代码
效果:
end;
作者: wangqi0077 时间: 2010-9-10 13:04
- @echo off
- set /p n=请输入下限值:
- set /p m=请输入上限值:
- set /a i=%random%%%%m%+%n%
- echo %i%
- pause
复制代码
作者: wc726842270 时间: 2010-9-12 20:21
@echo off
set /a b=%random%%%100 +100
echo %b% >>b.txt
pause
作者: leap 时间: 2010-9-13 10:45
- @echo off
- :1
- set /a aa=%random%%%201
- if %aa% gtr 99 (echo %aa%) else goto 1
- pause&goto 1
复制代码
[ 本帖最后由 leap 于 2010-9-13 10:47 编辑 ]
作者: we6540 时间: 2011-2-2 16:13
@echo off
set /a a=%random%%%100+200
echo %a%
pause
作者: we6540 时间: 2011-2-2 16:21
上面的搞错了
@echo off
:1
set /a a=%random%%%99+101
echo %a%
pause&goto :1
作者: sctrue 时间: 2011-3-11 22:34 标题: 这是什么意思啊?看不懂 只知道random能产生一个随机数
set /a num=%random%%%100+100
作者: mxxcgzxxx 时间: 2011-4-7 23:01
本帖最后由 mxxcgzxxx 于 2011-4-7 23:05 编辑
我的够特别的吧,基本超乱- @echo off
- :xx
- set /a a=%rendom:~1,2%+100
- echo %a%
- pause
- goto xx
复制代码
作者: dosbat 时间: 2011-4-20 21:25
3# zhangxiaopeng
因为在批处理中 取模运算是:%% 需要2个
而为了引用random 要用%random%
故出现了%random%%%这个形式
作者: dosbat 时间: 2011-4-20 21:46
本帖最后由 dosbat 于 2011-4-20 21:53 编辑
呵呵 代码如下 希望高手点评下 看有哪里写的不合适的地方
菜鸟一个 呵呵 代码如下:- @echo off&color 0a
- set max=200,min=100
- for /l %%i in (1,1,100) do (
- ::call调用的时候不要忘记:
- call :rand %%i %max% %min%
- )
- pause&goto exit
-
- :: :rand函数的定义
- :rand
- set /a ran=%random%%%(%2-%3+1)+%3
- echo 第%1个随机数:%ran%
- goto :eof
- :exit
- exit
复制代码
附带我对call的一些粗浅的理解:
call :标号 【参数列表】 注意我代码中的%1代表:rand这个函数的第一个参数,也就是for循环里面的%%i
其他依次类推 特别注意的是%0代表:rand本身而不是第一个参数 呵呵 刚开始我也犯了这个错误:用%0来引用第一个参数
例外我觉得call的使用有点类似于汇编中的call
作者: huomingpang 时间: 2011-4-30 20:57
好,学习啦 积累的少啊
作者: common 时间: 2011-6-13 22:25
- @echo off
- ::setlocal enabledelayedexpansion
- :1
- set a=%random%
- if %a% lss 100 goto :1
- if %a% gtr 200 goto :1
- echo %a%
- pause>nul
复制代码
作者: 牟头人 时间: 2011-6-16 12:37
高手如云啊
作者: cxmzlxb 时间: 2011-6-18 16:00
这个不错,挺简的!
作者: welllib 时间: 2011-6-24 08:59
本帖最后由 welllib 于 2011-6-24 09:05 编辑
- @echo off
- :start
- if %random% lss 10 (echo. 10%random%) else (echo. 1%random:~-2%)
- ping -n 2 127.1 >nul
- goto start
复制代码
以下为主要代码解释,方便第一次接触BAT的:
(1) if %random% lss 10 (echo. 10%random%) else (echo. 1%random:~-2%)
如果随机a数小于10,显示10a,否则显示1(随机数后两位)
例如:随机数为2,显示102;随机数为13234,显示134
(2) ping -n 2 127.1 >nul
延时器,ping 127.1两次
两次ping之间时间间隔为1s
作者: welllib 时间: 2011-6-24 09:08
改成如下@echo off
:eo
cls
echo 1%random:~-1%%random:~-1%
pause
goto :eo
wxcute 发表于 2008-10-1 19:32
这个方法不错,哈哈,我怎么就没想到呢
作者: PCL505512957 时间: 2011-8-24 21:53
- @echo off
- set/a str=%random%%%200
- if %str% geq 100 echo %str%
- pause>nul
复制代码
作者: 597476418 时间: 2011-8-27 13:13
利用批处理不能处理小数的性质写一个:- @echo off
- @set /a num=%random%/325+100
- @echo %num%
- @pause >nul
复制代码
作者: qc5111 时间: 2011-8-29 01:49
本帖最后由 qc5111 于 2011-9-8 01:13 编辑
- @echo off
- set /a a=%random%%%100+100
- echo %a%
- pause
复制代码
作者: qc5111 时间: 2011-9-8 01:14
哦,知道了
作者: birdsdeng 时间: 2011-9-15 01:06
set /a test=%random%%%100+100
作者: brim 时间: 2011-9-23 01:34
200以内的随机数- @echo off
- set/a num=%random%%%200
- echo %num%
- pause
复制代码
作者: 六道众生 时间: 2011-10-23 16:14
- @echo off
- :1
- set p=%random%
- if %p%lss100 goto 1
- if %p% lss 200 (
- echo %p%
- ) else (
- goto 1
- )
- pause
复制代码
作者: zaixinxiangnian 时间: 2011-10-23 17:29
- @echo off
- :a
- set/a w=%random%%%200
- if not %w% lss 100 (echo %w%) else goto a
- pause
复制代码
作者: wjx79my 时间: 2011-10-27 13:00
学习中。都是人才啊。目的都实现。方法各不同。
作者: bat爱好者 时间: 2013-1-12 15:58
- @echo off
- set /a a=%random%%%100+101
- echo %a%
- pause>nul
复制代码
作者: qq399254368 时间: 2013-5-31 13:54
我想问一下,能不能用for /l %%i in (100,1,200) do
然后从里面随机抽一个,可以的话后面应该怎么写?谢谢!
作者: sincere 时间: 2013-7-30 07:20
本帖最后由 sincere 于 2013-7-30 11:09 编辑
- @echo off
- set min=%1
- set max=%2
- if %min% equ %max% (echo %min%) & exit /b
- if %min% gtr %max% (set min=%max%) & (set max=%min%)
- echo %min% + %random% %% (%max% - %min% + 1)
复制代码
作者: Jay罗小尼 时间: 2013-8-2 10:19
@echo off
set /a i=%random%%%100+100
echo %i%
pause
作者: BHsolve 时间: 2013-12-30 15:33
- @echo off
- set /a a=%random%%%101+100
- echo %a%
- pause > nul
复制代码
作者: 1020878754 时间: 2014-2-9 22:21
set /a w=100+%random%%%100
作者: clsgalmc 时间: 2015-5-9 22:20
@echo off
set /a day=%random% %%200
echo %day%
pause>nul
作者: 437153 时间: 2015-6-8 16:23
- @echo off
- :1
- set/a m=1%time:~-2%
- echo %m%
- pause >nul
- goto :1
复制代码
群里讨论了,严格意义上不算随机。
作者: bluenightsky 时间: 2015-8-12 18:04
能用最短的批处理代码 实现 128位的 指定某些字符串的 字符串吗 我想加密我的软件要用
作者: wutarnow 时间: 2015-10-15 22:39
回复 1# youxi01 - @echo off
- call :CreateRandom
- echo %createRandom%
- goto :EOF
-
- :CreateRandom
- set createRandom=%RANDOM%
- if %createRandom% LSS 100 (
- goto :CreateRandom
- ) else if %createRandom% LEQ 200 (
- exit /b
- ) else (
- goto :CreateRandom
- )
复制代码
作者: unknown_world 时间: 2015-10-17 17:46
写了个范围内产生随机数的代码,请大家给点意见- @echo off
-
- set /p fist=请输入您的随机数开始值:
- set /p end=请输入您的随机数结束值:
-
- :loop
- set /a w=%random% %% (end+1)
- if %w% geq %fist% (echo %w%) else goto loop
- pause>nul
复制代码
作者: Alt32 时间: 2017-8-9 20:08
使用if判断:- @echo off
- color f0
- :eee
- set randomed=%random%
- if %randomed% lss 100 goto eee
- if %randomed% gtr 200 goto eee
- echo %randomed%
- set randomed=
- pause>nul
- exit
复制代码
作者: yhcfsr 时间: 2017-12-2 23:34
回复 4# youxi01
原来是取余
作者: wtuldn 时间: 2018-1-3 12:54
@echo off
:loop
set /a num=%random%%%200+1
echo %num%
pause>nul
goto loop
作者: 懒虫阿布 时间: 2018-7-22 18:46
- @echo off
- REM 产生一个100-200 之间的随机数
- setlocal enabledelayedexpansion
-
- set /a var1=%random% %% 200
- if %var1% LSS 100 (
- set /a var1=!var1!+100
- )
-
- echo var1=!var1!
复制代码
作者: impk 时间: 2019-8-31 22:37
- @echo off
- set /a w=%random% %% 100 + 100
- echo %w%
- pause
复制代码
作者: 唯尘 时间: 2022-10-26 10:52
@echo off
:a
set /a var=%random% %% 101+100
echo %var%
pause>nul & goto :a
作者: 772074834 时间: 2023-5-4 19:03
@echo off
set /a rd=%random% %% 100 + 100
echo rd=%rd%
pause
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |