找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20651|回复: 2

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

[复制链接]
发表于 2015-8-23 16:56:06 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
发表于 2015-8-23 22:53:33 | 显示全部楼层
纯批的解决办法:
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))
复制代码
 楼主| 发表于 2015-8-24 09:36:43 | 显示全部楼层
谢谢大神的解答,最后的 BAT+JS 有点深奥,还需要时间来消化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 20:49 , Processed in 0.030015 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表