注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

批处理产生指定范围随机数字或随机字长度符串的实现方法  

2017-04-27 17:39:47|  分类: 操作系统 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
说到随机数,不同的程序都有随机函数的功能,使用方法大体类似。之前的文章《批处理文件中的"系统变量"和"自定义变量" 》也说起过,批处理命令中有个%random%变量,可以产生0到32767之间的随机数。
1)下面用一个简单例子来示范下【将之保存为bat文件运行】:

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do (
echo 随机数:!random!
)

结果页面如下:
批处理产生指定范围随机数字或随机字长度符串的实现方法 - sinsunson - 天朝布衣田中码农参上
2)当然有些朋友会说,这范围太窄,如果要生产的随机数据范围可能是0到65534,也有可能是0到500之间,这个变量就不能够直接使用了。灵活一点,利用公式,同样可能满足需求。比如范围要变成65534,最简单就是把生成的随机数据相加【当然使用还可以利用其它办法,比如*2什么的】

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do (
REM 两次相加

set /a r=!random!+!random!
echo 随机数:!r!
)

执行结果如下:
批处理产生指定范围随机数字或随机字长度符串的实现方法 - sinsunson - 天朝布衣田中码农参上
3)如果只需要缩小范围,那就可以使用模运算【批处理中求模得用两个%%符号】

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do (
REM 取模
set /a r=!random!%%500
echo 随机数:!r!
)

执行结果如下:
批处理产生指定范围随机数字或随机字长度符串的实现方法 - sinsunson - 天朝布衣田中码农参上
所以在有了如上的基础之后,也能得出一个公式,%random%%%(max-min)+min来产生[min,max]区间里的随机数。
4)比如生成50到100之间的随机数【不包含100】,相关代码如下:

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do (
REM 取模
set /a r=!random!%%50+50
echo 随机数:!r!
)

5)那么最终的问题就来了,这种生成的随机数其实格式并不好看,有时我们需要比如001-999之类的随机数格式,那又要如何呢。

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do (
REM 因为要生成000-999,所以先生成1000-2000之内的随机数
set /a r=!random!%%1000+1000
REM 最终将这个数字当做字符截取后三位即可
echo 随机数:!r:~1,3!
)

执行结果如下:
批处理产生指定范围随机数字或随机字长度符串的实现方法 - sinsunson - 天朝布衣田中码农参上
怎么样,是不是很简单就生成了,结果正如我们所愿。
6)深度挖掘,如果要生成随机字符串,同样问题不大【这里的例子是生成随机10位字符串】。

@echo off&setlocal enabledelayedexpansion
set tmp=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890
for /l %%i in (1,1,10) do (
set /a "n=!random!%%62+1"
for %%z in (!n!) do set str=!str!!tmp:~%%z,1!
)
echo 密码为%str%

执行结果如下【如果需要生成不同长度随机字符串,请自行将循环中的10改成其它数字】:
批处理产生指定范围随机数字或随机字长度符串的实现方法 - sinsunson - 天朝布衣田中码农参上
嗯,基本上想要的功能都可以实现了,无需犹豫,赶紧用起。
  评论这张
 
阅读(1)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018