找回密码
 立即注册
查看: 852|回复: 2

[逆大天] Aegisub内置的lua的random种子竟然是固定的

25

主题

324

回帖

1056

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
407461
Lambholl 发表于 2025-9-7 20:43:24 | 显示全部楼层 |阅读模式
本帖最后由 Lambholl 于 2025-9-7 20:57 编辑

首先,我们可以证明在正常情况下,lua的math.random种子不是每次启动都固定的:
9a4f26fb-659d-4051-adc7-d008bbae2df7.png

直到今天我发现我用了一堆random的歌词脚本,启动后点击第一次Apply Karaoke Template后,整个文件都没有变,点击第二次才会改变,
于是我启动了两次aeg,比较了按第二次生成时生成的文件:
屏幕截图 2025-09-07 203938.png

创建新文件进行尝试,发现每次启动后第一次生成,都是固定的数字序列,而且所有版本都是这样:
1c4cd875-aaf9-415d-a2fa-af7cb6bab98a.png 47a7721c-aaab-474c-b931-25d4f9b5a5cd.png

查看logger的代码,其中基于计时器设置了种子:
b70b70d9-d6bf-42d6-b373-2e4330ff1553.png
可以推测其本意为基于随机生成一个种子,但是很明显这个函数返回值由于某种原因,变成了0,
因为当我们尝试在脚本中加入math.randomseed(0),不管生成多少次,都变成了和上面截图中一样的结果:
4aec1254-4e89-4f08-887f-8b8807908979.png

因此,可以确定这是一个logger导致的bug
回复

使用道具 举报

20

主题

164

回帖

20

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
244783
op200 发表于 2025-9-8 13:33:22 | 显示全部楼层
把 logger 中的 math.randomseed(timer\timeElapsed!*1000000) 改为 math.randomseed(1) 也没有效果

0.794... 是 seed 0 的第一个值,logger 中重设 seed 后 math.random, math.random, math.random

所以如果 logger 中重设的 seed 在脚本中运用了,得到的结果也不应该是 0.794,感觉应该是其他脚本覆盖了 logger 重设的 seed 为 0
回复

使用道具 举报

25

主题

324

回帖

1056

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
407461
Lambholl  楼主| 发表于 2025-9-8 19:54:52 | 显示全部楼层
op200 发表于 2025-9-8 13:33
把 logger 中的 math.randomseed(timer\timeElapsed!*1000000) 改为 math.randomseed(1) 也没有效果

0.794 ...

目前我也不太能找到其他脚本改的地方,能找到的都试了没效果
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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