煞神我的煞神世界制作骰子教程:从零开始手搓随机数发生器

凌晨三点半,我盯着工作台上散落的界制教程红石粉和木棍,突然意识到——这玩意儿比高中数学概率题实用多了。作骰今天咱们不聊什么高端自动化农场,煞神就解决一个最原始的界制教程需求:怎么在《我的世界》里造个能用的骰子

为什么需要骰子?作骰

上周和基友联机打生存,为了分赃差点真人PK。煞神后来我们约定用游戏里的界制教程随机数决定战利品归属,结果发现:这破游戏的作骰"随机"有时候比相亲还玄学。于是煞神就有了这个项目——做个真正公平的随机数生成器。

基础款骰子(6面)

先上最简单暴力的界制教程方案,材料清单:

  • 1个发射器
  • 6个不同物品(代表1-6点)
  • 1个按钮
  • 若干红石粉

把发射器朝上放置,作骰里面塞6种不同物品(比如木棍代表1,煞神苹果代表2...)。界制教程接上红石电路,作骰最后按按钮就会随机弹出一个物品。别笑,这真是最朴素的实现方式,缺点是每次用完得手动捡回来。

物品对应点数
木棍1
苹果2
煤炭3

进阶版:自动回收骰子

半夜测试时被基友骂了八次"憨批设计"后,我改良了这个方案。核心思路是用漏斗回收弹出去的物品:

  1. 发射器朝下安装
  2. 下方接漏斗和箱子
  3. 侧面装比较器检测物品数量

现在每次按按钮,发射器会随机吐个物品,掉进漏斗又自动装填。虽然还是有0.5秒延迟,但至少不用满地捡木棍了。红石线路要这么接:

  • 按钮→红石中继器(2档延迟)→发射器
  • 比较器→红石火把→漏斗(锁住时停止回收)

玄学概率测试

我闲得蛋疼做了100次投掷测试,结果如下:

点数出现次数理论概率
11816.67%
21516.67%

数据说明游戏随机算法还算靠谱,虽然3点出现得特别少...可能因为我用的腐肉当标记物,这玩意儿自带霉运属性?

究极体:二十面骰

跑团玩家别急,D20骰子也能做。需要以下材料:

  • 命令方块×1
  • 红石比较器×1
  • 命名牌(写上1-20)

在命令方块输入:/summon item ~ ~1 ~ { Item:{ id:"minecraft:name_tag",Count:1,tag:{ display:{ Name:'{ "text":"点数"}'}}}}把"点数"替换成1-20的随机数。虽然要背指令很烦,但扔出来的可是会冒烟的魔法骰子!

真人实测翻车现场

我家猫突然跳上键盘,导致指令输错变成/summon creeper...建议在创造模式先测试。另外千万别用烟花火箭当随机物品,上次把村民交易所炸出三米深坑,现在那群傻子见我就跑。

红石线路接好后发现个诡异现象:每次服务器重启后的第一次投掷必定出6。后来发现是区块加载时的红石信号残留问题,解决方法是在发射器旁边放个拉杆,玩之前先扳两下。

冷知识:游戏自带的随机机制

其实村民交易刷新、钓鱼 loot table 都用了更复杂的随机算法。根据Mojang在2019年GDC演讲的说法,他们的随机系统结合了:

  • 世界种子
  • 游戏刻计数
  • 实体UUID

所以理论上,如果你能记住世界种子和精确到tick的操作时间...算了别想了,老老实实按按钮吧。我试过用末影珍珠落点当随机数,结果在墙上撞出个人形凹痕。

现在这个骰子装置已经在我们服务器运行两周了,虽然偶尔会卡住需要踢一脚(物理意义上的),但至少解决了一个终极哲学问题:今晚谁去下矿