跳到主要内容
纸飞机教程

Telegram 里那个会自己动的东西:骰子为什么不能重抽

在聊天里发一个骰子符号,它不会像别的表情那样静静地待着。

它会动起来。滚一段,然后停在某个点数上。

同样会动的还有几个:飞镖盘会转,然后扎在某处分上;老虎机会转起来,然后停在某个组合上。它们的共同点是——你发出去的那个符号,会演出一段动画,最后给出一个结果。

这个功能用起来很有意思,但很多人对它有疑问:结果是怎么来的?能不能再摇一次?我发之前能不能知道自己摇到几?

而这三个问题,其实都指向同一件事。下面从最有意思的那个说起。

它有"一次"这个概念

先说说它和普通表情最本质的区别。

普通表情是一个符号。 你发一个笑脸,它就是一个笑脸。它不产生任何事件,不给出任何结果,你可以发一百遍,每一遍都一模一样。

而骰子承载的是"一次事件的结果"。

也就是说,"摇一次"这件事发生了,而这次发生的结果被记下来了。它不是"一个骰子图案",它是"这一次摇出来的点数"。

这个区别听起来有点绕,但它解释了骰子所有"奇怪"的行为。

其中最典型的一个就是:它不能重抽。

为什么不能重抽:因为结果不是在你这里定的

很多人第一次注意到这件事,是在想"我能不能再摇一次"的时候。

答案是:不能。发出去之后,那个点数就定死了。你没法点一下让它再滚一次。

而原因在于:那个结果不是在你手机上现摇的。

按这个功能的做法来理解,结局在消息发出的时候就已经定了,你的客户端只负责把那段动画播出来,然后停在那个已经定好的数上。

那为什么要这样做?

有两个很实际的理由。

第一个是"双方要看到同一个结果"。

这是最直接的理由。你和对方都得看到同一个点数,不然这个功能就没法当作"共同见证"。而如果两边各自在自己手机上摇,那两边摇出来的就可能不一样——那就没法用了。

所以结果必须由一个中间的地方定下来,然后发给两边。

第二个是"防止反悔"。

假设结果是在你手机上定的。那会发生什么?

你摇到了不想看到的数,于是断网重进、或者清掉重来,一直摇到满意为止。这样一来,"摇骰子"这件事就变成"我可以挑结果"了,它也就不再是一个公平的工具。

而结果一旦由服务器定下、并且写进那条消息里,这条路就堵住了。 消息发出去就是那个数,你这边没有任何"重来"的操作。

所以那句话可以这样说:它不能重抽,不是因为不给这个按钮,而是因为那个数压根不是你抽的——它是通知你的。

至于这个随机具体是怎么实现的、用得什么算法、强度如何,我没有可靠的依据,所以我不下断言。但从"双方一致"和"不能反悔"这两条需求来看,结果由中间定这件事是必然的。

那我发之前能不能知道点数

顺着上面,就轮到第二个问题了。

结论是:不能。

因为结果是在你发出这条消息的时候才定下来的,你在按下发送之前,那个数还不存在。

所以任何"提前看出点数""预测这次摇到几"的说法,从机制上讲都站不住——它没有可被提前看到的东西。

不过我要把边界说清:"不能提前知道"和"这个随机有多强的随机性"是两个问题。

前者我可以说清,因为它是机制决定的。而后者——它用了什么随机源、是不是密码学级别的强随机——我没有可靠的依据,所以我不评价。

对日常用途来说,这个区别不影响你用它。因为你要的只是"双方认可一个不由某一方决定的结果",而不是"抵抗国家级算力"。

它和表情包的区别

现在回答那个最常被问的对比问题。

它和表情包的区别,不在于"一个会动、一个不会动"。

因为现在很多贴纸本身就是会动的(各种格式的动态贴纸),甚至表情也可以动。所以"动不动"不是分界线。

真正的分界线是:它有没有"结果"。

表情包是一个表达。你发一个哭笑不得的脸,你在表达一种心情。它没有输赢、没有点数、没有下一次。

而骰子有结果。它会产生一个数,这个数会被记在聊天记录里,你和对方都能指着它说"看,就是这个数"。

由此带出几个实际差别。

第一个,它不能被"再发一次"当作重抽。 你可以再发一个新骰子,但那是另一次,前一次的结果还在那儿摆着。所以它和"重抽"完全是两件事——后面还会细说。

第二个,它有动画时长。 因为它要演一段,所以它不像普通表情那样一下子就到位。

第三个,它的结果和你无关。 这一点很重要:普通表情是"你选了它",而骰子的点数是"它给你的"。

而关于"表情和贴纸有什么区别",那是另一组概念,我在讲贴纸的那篇里写过,这里就不重复了。

还有几个同类的

会动的这一类不止骰子。

一般还能见到飞镖盘、老虎机、球类这些——它们的形式不同,但机制是一样的:发出去,演一段,给个结果,结果定死。

至于具体有哪些符号、每个能给出什么结果,各个版本可能不完全一样,所以你不如自己在输入框里试一遍——打出那个符号看它会不会变成动画消息,一试就知道。

顺便说一句你可能想问的:猜拳和抛硬币这类,如果它提供了对应的那个符号,那机制和骰子完全一样——因为它们要解决的问题一样,都是"让双方认可一个不由某一方决定的结果"。

那转发一个骰子,会重摇吗

这是一个很自然的延伸问题,而它的答案能反过来印证前面那套机制。

答案是不会。

你把一条摇出六点的骰子转发给别人,对方看到的还是六点。动画可能还会再播一遍,但演的是同一个结局。

为什么?

因为转发带过去的是"那条消息",而结果就记在那条消息里。

也就是说,结果不是"这段动画的产物",而是"这条消息的一个属性"。你把消息搬到哪儿,那个结果就跟到哪儿。

而这一点反过来也解释了"为什么不能重抽"。

想一想:如果这个结果能在接收方那边重新摇,那转发过去之后,对方一摇就变了个数——那这个结果还有谁认?

再进一步:如果谁都能重摇,那"摇骰子定胜负"这件事就彻底不成立了,因为每个人都只要摇到自己满意为止。

所以"结果固定在消息里"这件事,一举解决了两个问题:双方看到的一致,以及转发之后依然一致。

可以用一句话概括:动画是给你的眼睛看的,结果是给那条消息留的。转发带走的是后者。

这也顺带说明了一件事:你在聊天记录里看到的那条骰子消息,它本质上和其他消息一样,是一条"承载了内容"的记录——只不过它承载的内容不是一个字、一张图,而是一次摇出来的结果。

所以它和聊天记录里别的消息是同一种东西:存在那儿,可以被翻到,也可以被删掉。 前面说"用它决定事情要留个凭据",原因也正在这里。

那它能用来做什么

讲完原理,说说用途。而这里有一个我觉得很有意思的边界。

它的正确定位是:让双方认可一个不由某一方决定的结果。

所以那些需要"谁也没法作弊"的场合,它很合适。

比如两个人谁去干一件事,摇一下定下来。因为结果不由任何一方控制,所以事后谁也没法说"你肯定是故意摇的"。

比如要随机选一个人,用它比"我随便说个数"可信得多,因为后者的数字是你报的。

但这里有一个边界必须说清,而它和标题那句正好是相反的。

它不能重抽,但它可以被重发。

也就是说,你确实没法改变已经发出的那个结果,但你完全可以"再发一个"。而如果有人一直重发,直到摇出他要的那个数——那他就作弊了,只不过他是用"多发几次"作弊,而不是用"重抽"作弊。

所以那句总结是:"不能重抽"和"不能重来"是两件事。

前者靠机制挡住了(因为结果不是你定的);后者靠的是没人陪你玩第二次。

因此,拿它当公平工具,关键不在功能,而在规矩。 比如你可以事先说定"以第一条为准",那这个规矩本身就补上了那个漏洞。

还有一点值得提醒:它的结果是聊天记录里的一条消息,而消息是可以被删掉的。

所以如果你要用它来决定一件重要的事,记得事后留个凭据——截图、或者干脆把它转发到一个你不会清空的地方。不然过一阵记录清了,"当时摇的是几"就说不清了。

几个常见的坑

第一个坑,是以为它能重抽。摇出的结果一旦发出就定了,因为那个数不是你这边定的。

第二个坑,是相信有办法提前看出点数。它在发出时才定,之前不存在。

第三个坑,是把"再发一个"当成"重抽"。那是另一次事件,前一次的结果还在。

第四个坑,是把骰子和普通表情的区别理解成"会不会动"。真正的区别是"有没有结果"。

第五个坑,是用它决定重要的事却不留凭据。它终究是一条可以被删掉的消息。

最后

如果只用三句话记住这篇,我希望是这三句。

骰子和普通表情的区别不在于动没动,而在于它有没有"结果"。普通表情是一个符号,而骰子承载的是"一次事件的结果"——所以它有"这一次"这个概念,也就有了一系列特殊行为。

它不能重抽,是因为结果不是在你手机上现摇的。这么做有两个理由:双方要看到同一个结果,以及防止有人靠重来挑结果。所以那个数是你发出消息的时候由中间定下来的,你这边只是把它演出来。

但最后要记住那个更实际的边界:不能重抽,不等于不能重来。你改不了已经发出的结果,却可以一直发新的——所以拿它当公平工具,靠的不是功能,而是事先说好的规矩。

分享到: