文章目录

  • 简单介绍
  • 使用方法详解
    • 常规使用
    • 生成0开始任意长度整数
    • 生成任意区间整数
  • 使用场景
  • 总结

随机数的使用还是很普遍的,尤其是和游戏相关的时候。如何利用Batch批处理来生成任意区间的随机整数,这一节我们一起来看看。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

简单介绍

和shell命令一样,默认情况下的批处理运算都只是支持到整数而已,并且都是向靠近0取整。例如

c:\Batch\test>set /a a=2/3
0
c:\Batch\test>set /a a=5/3
1
c:\Batch\test>set /a a=-5/3
-1

%random%这个环境变量会返回一个区间在[0,32768)的整数,注意右边是开集。例如

c:\Batch\test>echo %random%
19531
c:\Batch\test>echo %random%
8501
c:\Batch\test>echo %random%
10888

使用方法详解

常规使用

直接打印出%random%即可

生成0开始任意长度整数

假设想生成区间为[0,m)的整数,那么可以用%random%*m/32768来实现,例如想要生成[0,100)的随机整数,直到生成的数小于35为止

:: random number less than 35
@echo off
:rand
set /a rnd=%random%*100/32768
echo %rnd%
if %rnd% gtr 34 goto :rand
echo Finally!!
exit /b

执行上面这个脚本的结果如下,循环3次以后得到小于35的结果,退出循环

c:\Batch\test>random100.bat
71
92
32
Finally!!

需要注意的是生成负数的时候,如果m是负数,那么得到的区间为(m,0]。如果要实现右边开集需要用到下面的方法。

生成任意区间整数

在上面的基础上只需要进行一个偏移就能达到目地了。例如生成区间[m,n)的整数,可以用%random%*(n-m)/32768+m来实现,例如生成[-100,100)的整数,如果是负数就退出

::random less than 0
@echo off
:rand
set /a rnd=%random%*200/32768-100
echo %rnd%
if %rnd% geq 0 goto :rand
echo Finally!!
exit /b

执行上面这个脚本的结果如下,循环了6次以后终于生成了一个负数

c:\Batch\test>random_100.bat
18
32
28
30
30
-32
Finally!!

使用场景

通常随机数都和循环一起出现,满足特定条件再退出循环,这在游戏设计当中是个相当常见的操作。

总结

Batch批处理的随机数只能支持到整数,如果想要生成随机浮点数需要借助外部脚本的帮助了。同时在涉及到负数的时候要注意,直接乘以负数和由偏移生成的负数在区间的闭合上是不一样的。

【Batch批处理】利用random生成任意区间的随机整数相关推荐

  1. numpy 生成任意shape的随机整数

    import numpy as np# 生成 [0,40) 之间的随机整数,shape为(20,2):2个维度,每个维度20个数据 np.random.randint(0, 40, size=(20, ...

  2. java 生成随机数(利用Random生成任意范围的随机数)

    目录 一.为什么需要这种方法? 二.方法思路 1.头尾相减 2.尾巴+1 3.最终的结果加上初始的首个数字 代码 运行结果 一.为什么需要这种方法? Random函数只能限制生成随机数的区间的末尾是多 ...

  3. python从random生成列表_详解Python利用random生成一个列表内的随机数

    详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...

  4. python 利用random生成验证码与MD5码加密过程

    python 利用random生成随机数 #!usr/bin/env python #_*_ coding:utf-8 _*_import randomprint('随机整成range(1,5)之间的 ...

  5. 利用random生成1-100里面的随机数,使用程序猜出这个数是多少

    利用random生成1-100里面的随机数,使用程序猜出这个数是多少 Random r = new Random(); int number = r.nextInt(100)+1; Scanner s ...

  6. javascript生成指定范围的随机整数

    JavaScript有提供一个生成值区间在(0, 1)的随机小数的函数. Math.random(); // 0.10529863457509858 如果你和喜欢的人一起执行这个函数,之后生成的随机小 ...

  7. javascript取随机数_js随机数生成方法和实例,生成[n,m]的随机整数,获取1-10之间的随机数...

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者像js-task1中一样随机选择一个盒子,随机一个颜色等等.这个时候我们就要知道用js应该如何获取一个随机数. 一.js随机数知 ...

  8. matlab生成任意区间的随机数

    使用matlab中的rand函数生成任意区间的随机数公式 r = a + (b-a)*rand(m,n) 其中[a,b]是范围,[m,n]是生成的数据形状.比如我想生成[-5,5]之内10个随机数 a ...

  9. python随机生成数字列表_详解Python利用random生成一个列表内的随机数

    首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range(1,34)) print得到一系列随机数,执行一次得到 ...

最新文章

  1. socket通信——通过Udp传输方式,将一段文字数据发送出去
  2. day11-元组与字典
  3. R语言基础入门(9)之因子类型
  4. 实时媒体AI,打破内容创作天花板,加速视频创新
  5. Java基本数据类型字节长度
  6. Fujitsu(富士通)扫描仪——fi-6130z 无感安装设置
  7. 苹果bundle id是什么?
  8. shell学习(一)简单示例help用法
  9. 赢在互联网的起跑线上
  10. 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 第一个Shader的书写
  11. 师傅带徒弟学:Python游戏开发引擎cocos2d-python-关东升-专题视频课程
  12. 手机设备唤醒计算机,手机微信实现网络唤醒电脑(WOL),远程开机,WakeOnLan – 全栈笔记...
  13. 如何对磁盘分区进行写保护
  14. 编写一个制造各种车辆的程序。包含三个类,具体要求如下: (1)基类Vehicle,包含轮子数和汽车自身重量两个属性,一个两参数的构造方法,一个显示汽车信息的方法; (2)小轿车类Car,增加载客数属性
  15. android createbitmap设置背景色,Android createBitmap截取实现移动的游戏背景
  16. 微商招代理赚钱方法:软文写成小说
  17. python多功能文本编辑器_Python GUI文本编辑器
  18. 任何收获都不是偶然 日复一日的付出和努力 一点一滴的进步,
  19. Protege 使用教程(详细讲解 入门简单易懂)
  20. A morphable model for the synthesis of 3D faces 学习笔记(未完)

热门文章

  1. 西门子1200与200SMART寻址的区别
  2. M4V转换器用户指南-如何无损转换M4V视频!
  3. 存储交换机和普通交换机
  4. 码神之路项目总结说明
  5. Shell命令、Dos命令和批处理命令
  6. springboot启动报错Parameter 0 of method a in com.* required a bean of type 'java.lang.String' that could
  7. 【Elsevier投稿】解决投稿系统latex编译不出来的问题!!!
  8. Java学习分享---数组排序方法
  9. 深度学习论文精读[9]:PSPNet
  10. 动态SQL,单表查询