• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[紫猫] [手机版]解决多个模拟器同步启动后随机结果一样的问题 [复制链接]

1#
大家在用模拟器同步器启动脚本的时候, 会发现每个模拟器的随机数结果是一样的, 比如5个模拟器随机结果顺序都是5, 2, 3, 2之类的.

这是因为按键精灵的Randomize() 命令默认值为当前系统秒数, 也就是在同一秒内不管启动运行多少次, 结果是完全一样的.

这里提供3种解决方法.

第一种, 使用紫猫插件的随机数功能, 紫猫插件的初始化随机数种子默认值是毫秒级的时间, 能解决大部分同步器的问题, 如果本方法无效, 请看第二个方法
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件, 内含执行zm.RndInitSeed()初始化随机种子功能, 所以不需要初始化随机种子了

  3. //这里注意, 千万不要加自带的Randomize()命令!!!!
  4. //直接用紫猫插件里的随机功能, 不管是随机数字还是随机姓名都可以
  5. TracePrint zm.RndNum(100, 10) //随机10到100
复制代码
第二种, 如果上面这种方法失败了, 那说明你电脑太优秀了, 所有脚本是在1毫秒内启动的, 那这种情况只能人为的改变初始种子了, 也就是每一个脚本给不同的初始随机数种子, 具体例子见下面代码, 如果你会写界面的话, 可以把初始化种子的10,20,30这部分加法数字放到界面配置上, 其他数字也可以, 反正保证每个模拟器的初始化种子值不一样就行, 这种是最推荐的方法.
  1. //第1个模拟器脚本
  2. Import "zm.luae" //导入插件,只需执行一次
  3. zm.Init //初始化插件
  4. zm.RndInitSeed Time() + 10 //初始化第1个模拟器的随机种子, 只要执行一次就够了, 千万不要循环执行多次!

  5. //这里注意, 千万不要加自带的Randomize()命令!!!!
  6. //直接用紫猫插件里的随机功能, 不管是随机数字还是随机姓名都可以
  7. TracePrint zm.RndNum(100, 10) //随机10到100
复制代码
  1. //第2个模拟器脚本
  2. Import "zm.luae" //导入插件,只需执行一次
  3. zm.Init //初始化插件
  4. zm.RndInitSeed Time() + 20 //初始化第2个模拟器的随机种子, 只要执行一次就够了, 千万不要循环执行多次!

  5. //这里注意, 千万不要加自带的Randomize()命令!!!!
  6. //直接用紫猫插件里的随机功能, 不管是随机数字还是随机姓名都可以
  7. TracePrint zm.RndNum(100, 10) //随机10到100
复制代码
  1. //第3个模拟器脚本
  2. Import "zm.luae" //导入插件,只需执行一次
  3. zm.Init //初始化插件
  4. zm.RndInitSeed Time() + 30 //初始化第3个模拟器的随机种子, 只要执行一次就够了, 千万不要循环执行多次!

  5. //这里注意, 千万不要加自带的Randomize()命令!!!!
  6. //直接用紫猫插件里的随机功能, 不管是随机数字还是随机姓名都可以
  7. TracePrint zm.RndNum(100, 10) //随机10到100
复制代码
如果你不想每个脚本单独配置, 第一种方法又无效, 那这里再提供一种不太靠谱的方法三.
依靠网络数据提供初始种子, 但是缺点是, 无法保证该网站每次都能成功返回数值, 毕竟是国外的站点.
补充提醒下, 该网站获取随机次数有限额, 大约一天1000次吧? 具体忘了, 所以该方法不是很稳定, 但是可以提供思路, 你们也可以自己找找有没有其他类似的网站
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件
  3. //获取网络数据初始化随机种子值, 警告, 有时候会出现获取失败导致结果异常!
  4. //只要执行一次zm.RndInitSeed()就够了, 千万不要循环执行多次!
  5. zm.RndInitSeed CLng(Url.Get("https://www.random.org/integers/?num=1&min=1&max=99999999&col=1&base=10&format=plain&rnd=new"))

  6. //这里注意, 千万不要加自带的Randomize()命令!!!!
  7. //直接用紫猫插件里的随机功能, 不管是随机数字还是随机姓名都可以
  8. TracePrint zm.RndNum(100, 10) //随机10到100
复制代码

最后编辑紫猫 最后编辑于 2022-02-09 20:12:15

【紫猫编程学院】火热招生中

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220 微信:zimaoxy

紫猫学院免费教程

加入交流QQ群: 7333555


发新话题 回复该主题