[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
参考以下两贴:
跟踪CMD中的随机数%random%中已经提到 random 是以时间为随机数种子,以及如何运算获得伪随机数。
可以看到这种算法是“有损”的,很难通过现有 %random% 逆推获得种子值
但可获取启动时间来换算随机数种子初始值,参考此贴:批处理技术内幕:随机数%RANDOM%

其实自己随便取个种子也口以啊:
  1. @echo off&setlocal enabledelayedexpansion
  2. set r=1!time:~-1!2!time:~-2!
  3. ::定义种子,这里就直接把产生的伪随机数当成种子来用了,虽然它们实际上是分开的...
  4. for /l %%a in () do (
  5.     set /a "r=(r*0x343fd+0x269ec3>>0x10)&0x7fff"
  6.     echo !r!
  7. )
  8. ::常数还是尊重ms的设置,想来他们取这几个值一定是有所考虑的
  9. pause
复制代码
1

评分人数

TOP

返回列表