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

[其他] 同一时间调用同一批处理生成的随机数一样/相同是什么原因

本帖最后由 pcl_test 于 2016-10-15 21:54 编辑

现象:
我用3个不同的批处理  同一时间调用 某一批处理,发现3个批处理获得的变量值都相同,但如果非同一时间调用,值是不同的,有没有办法让它同时调用的时候,变量的值都不同呢?

系统: win8.1

被调用批处理[C:\XX.BAT]内容如下 :
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 产生随机
  4. set min=200
  5. set max=350
  6. set /a mod=!max!-!min!+1
  7. rem 产生 min,max 之间的数
  8. set /a x=!random!%%!mod!+!min!
  9. echo %x%
  10. pause
复制代码
调用批处理就是
  1. call C:\XX.bat
复制代码

纯批的解决办法:
http://www.bathome.net/redirect. ... 8&fromuid=30406
不过其实分布概率基本上降到了 1%,对于精度要求更高的场合仍不够用

也可使用 random、conset 或 cset64 等第三方工具
http://www.bathome.net/viewthread.php?tid=35723

或 bat+js 混编
  1. 1>1/* :
  2. @echo off
  3. for /f "delims=" %%a in ('cscript -nologo -e:jscript "%~0"') do set rand=%%a
  4. echo 随机数=%rand%
  5. pause & exit
  6. */
  7. WScript.Echo(parseInt(Math.random()*1000))
复制代码

TOP

谢谢大神的解答,最后的 BAT+JS 有点深奥,还需要时间来消化。

TOP

返回列表