Board logo

标题: [其他] 同一时间调用同一批处理生成的随机数一样/相同是什么原因 [打印本页]

作者: kenter    时间: 2015-8-23 16:56     标题: 同一时间调用同一批处理生成的随机数一样/相同是什么原因

本帖最后由 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
复制代码

作者: CrLf    时间: 2015-8-23 22:53

纯批的解决办法:
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))
复制代码

作者: kenter    时间: 2015-8-24 09:36

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2