标题: [其他] 同一时间调用同一批处理生成的随机数一样/相同是什么原因 [打印本页]
作者: kenter 时间: 2015-8-23 16:56 标题: 同一时间调用同一批处理生成的随机数一样/相同是什么原因
本帖最后由 pcl_test 于 2016-10-15 21:54 编辑
现象:
我用3个不同的批处理 同一时间调用 某一批处理,发现3个批处理获得的变量值都相同,但如果非同一时间调用,值是不同的,有没有办法让它同时调用的时候,变量的值都不同呢?
系统: win8.1
被调用批处理[C:\XX.BAT]内容如下 :- @echo off
- setlocal enabledelayedexpansion
- rem 产生随机
- set min=200
- set max=350
- set /a mod=!max!-!min!+1
- rem 产生 min,max 之间的数
- set /a x=!random!%%!mod!+!min!
- echo %x%
- pause
复制代码
调用批处理就是复制代码
作者: 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/* :
- @echo off
- for /f "delims=" %%a in ('cscript -nologo -e:jscript "%~0"') do set rand=%%a
- echo 随机数=%rand%
- pause & exit
- */
- WScript.Echo(parseInt(Math.random()*1000))
复制代码
作者: kenter 时间: 2015-8-24 09:36
谢谢大神的解答,最后的 BAT+JS 有点深奥,还需要时间来消化。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |