作者x94fujo6 ()
看板Arknights
标题Re: [闲聊] 代理的随机并非完全不变
时间Tue Jul 14 17:58:57 2020
※ 引述《AirFuckKing (空干王)》之铭言:
: ※ 引述《x94fujo6 ()》之铭言:
: : 机率的判定是靠乱数表
: 是靠随机函式带入seed值後回传的值判定
所以产生的整串乱数每次都一样
不能当成一个表/轴看?
: : 乱数表是每场战斗进场才随机产生的
: 初始的seed值是每场战斗进场才随机产生
: : 然後该场战斗中的机率判定就是照这个固定的表来跑
: 依照随机函式带入初始的seed值 以及後续seed递回的值 所回传值进行判定
: : 同一场战斗/代理中
: : 乱数表是不变的
: 初始seed是不变的
: : 所以代理在[某种程度上]可以重现机率判定
: : 但并不是完全不变
: : 队伍里面有技能/天赋是机率或是队伍练度高了打怪变快
: : 都可能导致乱数表偏移
: 都可能导致带入随机函数的seed值不一样所回传的值不一样
就偏移 你这样说让不懂的人看不懂比较厉害?
: : 例如原本你录到的代理乱数表是
: : 编号 01 02 03 04 05 06 07 08 09 10 11 12
: : 乱数 11 73 50 62 38 99 14 34 26 81 56 30
: : (这张表的数字不重要,重要的是判定结果)
: : 例如这场战斗你用12F档攻击
: : 不管你用他档多久,重点是你每用他档一次伤害就会进行一次机率判定
: seed就会进行一次递回运算 这会导致原本要带入随机函式的seed值递回项次不一样
: : 这会消耗掉一个乱数表上的乱数
: : 但是队伍练度提升了,怪死的比较早
: : 结果12F少扛一次攻击,那之後所有机率判定用的乱数就会全部提前一个
: 使递回的seed值提前一个
: : 当判定时用的数字不一样就会影响结果
没有原始码 无法证明後面到底怎麽实作的
再说不需要递回新的乱数种子
乱数的实现方法本来就已经包含
只要最一开始设定就可以
也符合代理的要求的重现机率判定结果
目前能观测到的结果
其他干员因为各种原因而导致多用一个/少用一个
让後续的结果偏移掉
也可以靠用其它干员消耗乱数把你要的结果连接起来
随便写个python
这是模拟 黑 二技 机率50%
import random
random.seed(100)
for loop in range(0, 10):
random_number = round(random.random()*100)
if random_number > 50:
critical = 0
else:
critical = 1
print("序号:{:02d}, 乱数:{:02d}, 判定结果:{}"
.format(loop, random_number, critical))
执行结果 (序号加给人看的)
序号:00, 乱数:15, 判定结果:1
序号:01, 乱数:45, 判定结果:1
序号:02, 乱数:77, 判定结果:0
序号:03, 乱数:71, 判定结果:0
序号:04, 乱数:73, 判定结果:0
序号:05, 乱数:43, 判定结果:1
序号:06, 乱数:80, 判定结果:0
序号:07, 乱数:53, 判定结果:0
序号:08, 乱数:08, 判定结果:1
序号:09, 乱数:46, 判定结果:1
种子固定 产生的乱数也固定
整场下来 整个乱数序列 = 乱数表
当表看人类方便理解也方便操作
上面模拟代理纪录结果是前两次成功爆击 但接下来三次没有
实战中让黑继续可以连续爆击的方法
用其它干员把中间没爆击的乱数序列消耗掉
效果等於黑可以跳过没爆击的那几个乱数
变成
import random
random.seed(100)
for loop in range(0, 10):
random_number = round(random.random() * 100)
if not any(x == loop for x in [2, 3, 4, 6, 7]):
if random_number > 50:
critical = 0
else:
critical = 1
print("序号:{:02d}, 乱数:{:02d}, 判定结果:{}"
.format(loop, random_number, critical))
序号:00, 乱数:15, 判定结果:1
序号:01, 乱数:45, 判定结果:1
序号:05, 乱数:43, 判定结果:1
序号:08, 乱数:08, 判定结果:1
序号:09, 乱数:46, 判定结果:1
现在只观测黑的情况下就是连续爆击5次
也符合实战测试结果
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.176.49 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Arknights/M.1594720740.A.A6B.html
1F:推 tliu257: 楼下披萨猫推看不懂= = 07/14 18:04
本来就不好说明
改成比较好懂 一般人可以理解 也能实际在游戏内实现的方法说明
就有人硬要跟你讨论程式
阿就黑箱 没人知道到底怎麽实作的
观测结果就是这样
我重点是在讨论游戏内现象好吗
原来是CSDN/stackoverflow啊 我还以为是ptt方舟版呢
溜了溜了
※ 编辑: x94fujo6 (114.33.176.49 台湾), 07/14/2020 18:18:43
2F:推 plzza0cats: 看不懂== 有文组看得懂的方式吗? 07/14 18:21
3F:→ harryron9: 乱数表这个名词就是让文组看得懂的方式了(? 07/14 18:26
4F:推 keika03: 喔喔原来是这样子,嗯我现在完全搞懂了<--代理指挥貌 07/14 18:27
5F:→ kuria610478: 太棒了,我逐渐理解一切.jpg 07/14 19:06
7F:推 fd90312: 娘子快跟我出来看真正的刀客塔怎麽玩游戏的 07/14 19:56