批处理之家's Archiver

youxi01 发表于 2008-1-3 23:16

批处理如何产生一个100-200 之间的随机数?

题目如题。
要求:方法不限,达到目的即可。

随风 发表于 2008-1-7 12:43

[color=red]代码内容,设置的颜色为white,防止答案轻易泄露[/color][color=blue]
显示方法 1:按住鼠标左键,框住代码即可。
显示方法 2:点击代码右上角的“复制内容到剪贴板”也可。[/color][color=white][code]@echo off
set /a w=%random%%%100+100
echo %w%
pause[/code][/color][color=red]高亮(反选)显示代码[/color]

[[i] 本帖最后由 随风 于 2008-1-7 19:55 编辑 [/i]]

zhangxiaopeng 发表于 2008-4-4 10:32

后面为什么要加三个%%%呢??

youxi01 发表于 2008-4-4 10:41

呵呵,他的写法有点点“怪”
写成这个样子你就明白了:


set /a w=%random% %% 100+100

ieutk 发表于 2008-4-28 23:04

[code]@echo off
:loop
set /a w=%random%%%101+100
echo %w%
pause
goto loop[/code]

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

多写了几句,方便测试一点。[code]@echo off
:start
cls
set /a num=%random%%%101+100
echo 本次在规定范围内产生的随机数为%num%
pause
goto start[/code]

SmallK 发表于 2008-9-4 00:53

[quote]原帖由 [i]随风[/i] 于 2008-1-7 12:43 发表 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=1666&ptid=468][img]http://www.bathome.net/images/common/back.gif[/img][/url]
代码内容,设置的颜色为white,防止答案轻易泄露
显示方法 1:按住鼠标左键,框住代码即可。
显示方法 2:点击代码右上角的“复制内容到剪贴板”也可。@echo off
set /a w=%random%%%100+100
echo %w%
pause高亮 ... [/quote]

随风,你的变量计算公式还差那么一点点吧~~

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

[code]
@echo off
:redo
set num=%random%
if %num% lss 100 goto redo
if %num% gtr 200 goto redo
echo %num%
set num=
pause>nul
[/code]
-------------------------------------------------------------------------------------
还是set /a w=%random%%%100+100这个简洁

[[i] 本帖最后由 batbird 于 2008-9-12 15:06 编辑 [/i]]

wxcute 发表于 2008-9-15 12:57

切成两段,没有200[code]@echo off
:eo
cls
echo 1%random:~-2%
pause
goto :eo[/code]

lovelymorning 发表于 2008-9-28 19:52

[quote]原帖由 [i]wxcute[/i] 于 2008-9-15 12:57 发表 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=10253&ptid=468][img]http://bbs.bathome.net/images/common/back.gif[/img][/url]
切成两段,没有200@echo off
:eo
cls
echo 1%random:~-2%
pause
goto :eo [/quote]


%random:~-2%
不妥吧,如果随机出来的是一位数呢?那 %random:~-2% 不就出错了???

wxcute 发表于 2008-10-1 19:32

回复19数,确实是,多谢指正。

改成如下[code]@echo off
:eo
cls
echo 1%random:~-1%%random:~-1%
pause
goto :eo[/code]

firewolf85 发表于 2008-12-6 13:10

set /a num=%random%%%100+100

firewolf85 发表于 2008-12-6 13:28

对代码[code]set /a num=%random%%%100+100[/code]测试发现小问题一个,不能得到200,数值范围为100-199
将代码修改为[code]set /a num=%random%%%101+100[/code]可以得到完整的100-200

[[i] 本帖最后由 firewolf85 于 2008-12-6 13:40 编辑 [/i]]

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

[quote]原帖由 [i]suqili56[/i] 于 2008-12-6 13:47 发表 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=16581&ptid=468][img]http://bbs.bathome.net/images/common/back.gif[/img][/url]
@echo off
set a=%random%
set /a n=%a%%%100*2
echo %n%
pause [/quote]
楼上这个输出的貌似都是偶数吧

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:
[code]
@echo off
:start
cls
set /a a=%random%%%10
set /a b=%random%%%10
echo 1%a%%b%
pause&goto start
[/code]

页: [1] 2 3 4

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.