找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: youxi01

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

[复制链接]
发表于 2011-4-20 21:46:39 | 显示全部楼层
本帖最后由 dosbat 于 2011-4-20 21:53 编辑

呵呵 代码如下 希望高手点评下 看有哪里写的不合适的地方
菜鸟一个 呵呵 代码如下:
  1. @echo off&color 0a
  2. set max=200,min=100
  3. for /l %%i in (1,1,100) do (
  4.                 ::call调用的时候不要忘记:
  5.         call :rand %%i %max% %min%        
  6. )
  7. pause&goto exit

  8. ::  :rand函数的定义
  9. :rand
  10. set /a ran=%random%%%(%2-%3+1)+%3
  11. echo 第%1个随机数:%ran%
  12. goto :eof
  13. :exit
  14. exit
复制代码
附带我对call的一些粗浅的理解:
call :标号  【参数列表】 注意我代码中的%1代表:rand这个函数的第一个参数,也就是for循环里面的%%i
其他依次类推 特别注意的是%0代表:rand本身而不是第一个参数 呵呵 刚开始我也犯了这个错误:用%0来引用第一个参数
例外我觉得call的使用有点类似于汇编中的call
发表于 2011-4-30 20:57:55 | 显示全部楼层
好,学习啦     积累的少啊
发表于 2011-6-13 22:25:03 | 显示全部楼层

  1. @echo off
  2. ::setlocal enabledelayedexpansion
  3. :1
  4. set a=%random%
  5. if %a% lss 100 goto :1
  6. if %a% gtr 200 goto :1
  7. echo %a%
  8. pause>nul
复制代码
发表于 2011-6-16 12:37:08 | 显示全部楼层
高手如云啊
发表于 2011-6-18 16:00:34 | 显示全部楼层
这个不错,挺简的!
发表于 2011-6-24 08:59:32 | 显示全部楼层
本帖最后由 welllib 于 2011-6-24 09:05 编辑

  1. @echo off
  2. :start
  3. if %random% lss 10 (echo. 10%random%) else (echo. 1%random:~-2%)
  4. ping -n 2 127.1 >nul
  5. 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
发表于 2011-6-24 09:08:34 | 显示全部楼层
改成如下@echo off
:eo
cls
echo 1%random:~-1%%random:~-1%
pause
goto :eo
wxcute 发表于 2008-10-1 19:32

这个方法不错,哈哈,我怎么就没想到呢
发表于 2011-8-24 21:53:08 | 显示全部楼层
  1. @echo off
  2. set/a str=%random%%%200
  3. if %str% geq 100 echo %str%
  4. pause>nul
复制代码
发表于 2011-8-27 13:13:19 | 显示全部楼层
利用批处理不能处理小数的性质写一个:

  1. @echo off
  2. @set /a num=%random%/325+100
  3. @echo %num%
  4. @pause >nul
复制代码
发表于 2011-8-29 01:49:25 | 显示全部楼层
本帖最后由 qc5111 于 2011-9-8 01:13 编辑
  1. @echo off
  2. set /a a=%random%%%100+100
  3. echo %a%
  4. pause
复制代码

评分

参与人数 1PB -1 收起 理由
cjiabing -1 注意代码超过一行要用[code]括起来

查看全部评分

发表于 2011-9-8 01:14:03 | 显示全部楼层
哦,知道了
发表于 2011-9-15 01:06:10 | 显示全部楼层
set /a test=%random%%%100+100
发表于 2011-9-23 01:34:28 | 显示全部楼层
200以内的随机数
  1. @echo off
  2. set/a num=%random%%%200
  3. echo %num%
  4. pause
复制代码
发表于 2011-10-23 16:14:33 | 显示全部楼层

  1. @echo off
  2. :1
  3. set p=%random%
  4. if  %p%lss100 goto 1
  5. if  %p% lss 200 (
  6.     echo %p%
  7.     ) else (
  8.     goto 1
  9. )
  10. pause
复制代码
发表于 2011-10-23 17:29:30 | 显示全部楼层
  1. @echo off
  2. :a
  3. set/a w=%random%%%200
  4. if not %w% lss 100 (echo %w%) else goto a
  5. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:38 , Processed in 0.027396 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表