第189章 ,/.

......

......

......

......

......

......

自然生成的僵尸,有5%的概率生成出一只幼年僵尸。幼年僵尸不可被成年僵尸骑乘,因此当指令『/ride @e[type=zombie] summon_ride zombie』在目标选择器『@e[type=zombie]』只选择到一个僵尸的情况下生成出一只幼年僵尸时,指令将执行失败,返回的成功次数为0。

也就是说,上述指令有5%的概率执行失败。我们可以造一个命令模块验证一下这5%的概率:

(指令版本:基岩版1.19,未开启实验性功能)

A→B→C→D→E→F→G→

A[重][无][红]······ride @e[type=zombie,name=a] summon_ride zombie reassign_rides minecraft:entity_spawned

B[链][限][始]······scoreboard players add count test 1

C[链][无][始]······ride @e[type=zombie,name=a] stop_riding

D[链][无][始]······execute @e[type=zombie,name=a]~~~ kill @e[type=zombie,r=6,name=!a]

E[链][无][始]·······execute @e[type=zombie,name=a]~~~ kill @e[type=item]

F[链][无][始]·······scoreboard players add times test 1

G[链][无][始]······tp @e[type=zombie,name=a]-16 -60 0

\\图例\\

小主,

[重]重复;[无]无条件;[红]需要红石;[脉]脉冲;[限]有条件的;[始]始终活动;[链]连锁

\\使用到的计分项\\

test

\\使用到的变量\\

count(指令成功次数)、times(指令执行次数)

上面的模块会不断重复执行『ride @e[type=zombie,name=a] summon_ride zombie reassign_rides minecraft:entity_spawned』这条指令,并计算出指令的成功次数和执行次数。经过运行,加上一点儿人工计算,就可以得到以下数据:

执行1784次,成功1699次,差值85,失败概率约4.76%

执行次,成功9488次,差值512,失败概率约5.12%

可见,概率差不多就是5%。

为什么我要提这东西呢?

/ride作为一个使得玩家能够控制实体骑乘的指令,竟然能够因为这个特性而用于概率计算中,挺令人惊讶的是不是?但其实,不管是对于指令还是隔壁红石来说,能够巧妙运用游戏本身的特性,就是进阶玩家的基本要求。/ride只是一个例子,像这样的例子还有很多。特别是在基岩版,由于指令自由度没有Java版高,这迫使得许多基岩版的指令玩家大显神通,通过许多看起来十分取巧的方法实现许多看似不可能实现的功能,这边举几个例子:

①通过玩家攻击隐形盔甲架来实现点击牌子、点击村民NPC的效果

②通过tell指令能够使用目标选择器的特性,在tell指令中塞入大量的@e目标选择器并发送给指定玩家,来使得指定玩家游戏卡死以实现封禁的效果

③在Java1.13版本前,由于没有能够读取NBT数据的指令,因此当时普遍的方法是通过选取具有特定NBT标签值的实体并给予指定标签或分数,并使用穷举的方法来实现读取NBT数据的功能

④通过testforblocks指令比较命令方块,来实现检测物品和玩家名是否一致

所以,有时候当你想实现一个功能时却不知道怎么实现,不妨放开脑洞,想一想一些指令的特性,或许你就有了思路!

本章到此完全为止。