这个游戏失去了一名玩家

  • f
    fuochai
    可以是可以,但没必要吧。我氪800前后感觉没差
    技术上想整其实也可以做到,但不如直接一句“信不过别玩”来得方便。
  • P
    Patlain
    70w猴消费厅调查下来不是没作假么?
  • h
    hamartia
    就像楼上S1ER说的,反正你没有实际的经济损失,那就play呗

    虽然这类棋牌游戏的算法自然是后出的比老游戏精密,但一样是拼规律。当年的扑克类eroge《ACE SPADES》,我就算手牌不看只管全都盲换,照样能有一定几率三次连胜把对面的女孩子脱得光溜溜的。
  • f
    fuochai
    看了半天,我并没有看出你这个方案怎么保证令牌是“真”由玩家决定的(仍有翻令牌前令牌不确定,即先确定顺序再由玩家的选择决定令牌的可能)
    我的想法是翻之前由令牌顺序(东南西北汉字)+随机的英文字母的字符串生成一个md5值,在翻令牌前即公开。
    翻完后和回放都可以公开这个令牌顺序+随机英文字母和md5以证明没有令牌顺序的造假
  • 舌怪
    这只能叫特色吧,不能说是问题
  • y
    yoyokrieg
    啊对,之前的设计确实有这个盲区,而且这很致命。就像很多街头魔术一样,有了玩家的参与交互反而增加了可信度,谁知这是一个设计的局。给令牌顺序提供验证路径是能消除玩家的顾虑。
  • c
    cryczp
    资中麻将欢迎你....
    只有筒条两色牌...
  • l
    lukesweet
    你的想法很棒,但是翻令牌的随机性还需要一轮额外的操作来保证,此操作又涉及到一次用户选定暗码并广播的行为,稍微有点绕圈子了。
    直接一点的解决方案是,随机生成一组口令,生成md5并广播,然后所有人各自输入一个口令,按东南西北顺序拼接至初始口令后,根据这个长口令生成牌山并分发。口令的确定性通过预广播的md5保证,牌山的确定性也可以通过对口令的控制权保证。
    总之每个玩家各自给出暗码这件事一定程度上是必须的,否则玩家对暗码没有控制权的情况下,换码和信息泄露两个矛盾是不可调和的。甚至这个口令不能是简单的选择题(比如让用户按喜好选白发中之一),否则重复试验可以挑出一个无论大家如何选择都可以使结果偏好某个人的初始码(之前提到的翻令牌也有这个问题)。
  • 小五的拖鞋
    进来看到楼主的抱怨,本来只想说句这情况很正常,然后往下一看这楼的走向,我只能说,不愧是程序员论坛
    点炮,点大炮,吃四,被飞,被按在地上锤都很正常,这都输不起没法玩了,至少先打300个半庄再来抱怨吧
    顺便楼主自己打得也有点问题,起手就把123万的面子拆了,建议学习下基础牌效理论,打多了总会时来运转,日麻很好玩的
  • n
    nausicaa__
    打到第二排最后第三排开始的巡目,剩三枚字牌很可疑,危险度我觉得几乎和生张类似.客风如果有人打出一张,其他家手上有单张会更倾向于打出来,一直不出来是有很大概率成对子


    不过这里我也会打北了.反正听牌其它也没的打的
  • f
    fuochai
    你这个不得玩家输一串字符,我那个只需点击一次……
    对程序而言你的方案可能更简洁,但玩家不这么想啊
    每一局都要重输
  • l
    lukesweet
    不不,你没理解我意思,我那一楼里的观点和内容并不是出于算法的简洁性而提的,而是出于修补你算法的缺陷(无意冒犯)。
    主要是因为你的算法存在如下两个问题:
    1. 理论上运营方可以通过一定的手脚,能够在不违反你提出的规则的条件下,使得某个特定玩家的牌序特别好。而且关于这一点无论你如何改进,只要你永远是鼠标点一下(意味着选项集size较小),这一“手脚”的复杂度代价极低导致可行(具体见我上个楼的最后)。
    2. 你没有说明如果运营方在随机翻令牌这一步骤上做手脚怎么预防。如果不设计算法单独处理,那么整个机制是不可信的,但如果单独设计这个部分,那么又涉及到了一个输入暗码的问题,详细见公平随机数生成问题。
    在不输入字符的情况下,这两个问题解决不了任何一个,更何况必须两者同时解决整个算法才能生效。
    当然了,整个讨论是建立在不信任运营方的前提下的,要是默认运营方可信,那整个讨论从最初就是无意义的。
  • f
    fuochai
    先生成牌山并公开md5,再来抽令牌,你来告诉我怎么给特定玩家准备牌吧。
    不管牌山怎么生成,只要四个人的顺序随机就没法保证,除非所有人的起手都具有那个特性,那有何来的不公平可言
  • m
    muermaru
    有没有特殊处理另说,但是四个人的顺序肯定不是随机的,仔细观察就可以发现第一个加载完的肯定是头庄,那么后面的位置肯定是加载顺序排的
  • l
    lukesweet
    没有冒犯的意思,但我觉得您这说的话比我这只密码学的三脚猫还业余。
    如果我没理解错的话,您的意思是东南西北每个人翻一张,所以应该是seed=rand()%24,先不说凭什么你默认这个rand()%24是真随机而不是运营塞给你的特定顺序(无论你点哪张都是西),我们暂且假设这个随机是可信的。对于任何一个初始暗码A,拼接seed=k时,玩家1(氪金者,我想让他多赢一些),我必定可以给此时确定的牌山估算一个玩家1的优势值Adv(A,k,1)。定义Rst(A,i)=sum_k(Adv(A,k,i))/24,遍历24*10000个(乘24用于抵消大数效应)A:A1,A2,...,挑个argmax(Rst(·,1))的A_hat作为初始暗码即可,在此暗码下玩家1的期望优势值肯定是显著高于其他人的。
    没错,这里需要依赖一个合理的优势值函数Adv,即对牌山的顺序与胜率的关系有明确认知,这里我默认已经存在或者容易获得了,不然帮助某个人作弊这件事从一开始就无从讲起。
    所以我说你误会了,运营方想搞你,从一开始就没必要打着换牌山(换码)的心思,只要算出一个暗码,让你们无论怎么抽方位,让特定玩家获得期望优势即可。
    这个作弊的时间代价是O(|Alt|^4),完全是可接受范围。
  • 虚无连斩
    雀魂神仙牌感觉和当年鸟笼差不多多
  • f
    fuochai
    我是业余咋了?这不妨碍我的方案保证随机
    你根本没看明白我第一个关翻牌的回复,就这么简单。
  • l
    lukesweet
    保证随机?一个规则方案下可以通过漏洞偏袒某个人,这也好意思叫随机?
    如果你觉得玩家1胜率显著大于25%也叫随机,那么行了,还要什么算法,你干脆放运营商随便搞得了,反正他也不可能把零氪玩家胜率搞成0是不是?
    而且你还没回答如何保证东南西北抽的结果是随机而不是运营商给你先定好的呢。
  • 茛菪
    恩……你考虑一下,如果吧sum_i(Adv(A,k,i))/4定义为0的话,那么因为麻将规则本身玩家跟位置的对称性,sum_k(Adv(A,k,i))应该永远为0的。
  • f
    fuochai
    我在54楼的:
    由令牌顺序(东南西北汉字)+随机的英文字母的字符串生成一个md5值,在翻令牌前即公开。

    翻完后和回放都可以公开这个令牌顺序+随机英文字母和md5以证明没有令牌顺序的造假
    怎么预先设定玩家的顺序 请你教教我好吗
  • l
    lukesweet
    E_A(sum_k(Adv(A,k,i)))是0没错,但是括号内的sum_k(Adv(A,k,i))是个随机数,可以是值域内的任何值
  • 上坂莲华
    不少人默认打断19或者门清
  • l
    lukesweet
    我也在66#说的很清楚了,只要你的选择范围不大,运营方永远可以通过预先模拟结果,然后筛选出期望结果更偏好特定玩家的初始字符串给你。不需要决定玩家的顺序,也不需要决定牌山的顺序,只要保证结果是倾向于某个人的就行了。简单来说,王思聪来玩的时候,他抽到东的时候,东家摸到好牌的概率更大,他抽到北的时候,北家的好牌概率更大。一切都不是确定的,但是概率可以偏向他(你要是允许4^24的算力,我甚至可以让每一局一定倾向于他)。
    至于你说这个随机英文字母的字符串是随机的?不好意思,通用的公平随机数生成算法本身就是需要通过额外的暗码和广播来生成的。如果不会请谷歌或者找本密码学的硕士课程教材来读一下。
    如果玩家懒得每次写字符串,永远不可能通过机制的约束来运营方不作弊(使得他指定的某个人获得优势),就这么简单。这个问题和公平随机数生成问题是等价的,人家一群数学家研究了几十年才建立出来的结果,要是你能理解就理解,不理解我也不强求。
    再说一遍,我不是故意杠,我就陈述这么一个事实而已,用户想要不费力地保证公平,仅仅凭借哈希这个工具做不到。
  • 茛菪
    我觉得并不是这样的。比如玩家编号为数字1-4,排列顺序对应东南西北,那么sum_{k=1234,2341,3412,4123}(Adv(A,k,1))=sum_i(Adv(A,1234,i))=0

    同理sum_k(Adv(A,k,i))对任何i都是恒定为0
  • l
    lukesweet
    式子的第一个等号不成立。
    这里k会拼接A并决定Adv的随机值,而不是仅仅提供位置的信息值。简单说Adv(A,1234,1)≠Adv(A,2341,2)。
    而且在Hash的保证下,Adv(A,·,1)|A几乎可以认为是相互独立的随机值。
  • f
    fuochai
    你别扯那些没用的,先说说我那个抽令牌的方案,运营方怎么作弊吧。
  • l
    lukesweet
    说了,66楼。看不懂我就再复制一遍给你。
    东南西北每个人翻一张,所以抽签结果可以抽象成seed=rand()%24,我们暂且假设这个随机是可信的。对于任何一个初始暗码A,拼接seed=k时,玩家1(氪金者,我想让他多赢一些),我必定可以给此时确定的牌山估算一个玩家1的优势值Adv(A,k,1)。定义Rst(A,i)=sum_k(Adv(A,k,i))/24,遍历24*10000个(乘24用于抵消大数效应)A:A1,A2,...,挑个argmax(Rst(·,1))的A_hat作为初始暗码即可,在此暗码下玩家1的期望优势值肯定是显著高于其他人的。
    要是再看不懂,那你就当我什么都没说吧,你赢了,我毕竟不是大学老师,让我教会一个没基础的人确实很勉强了。
    别跟我说什么初始字符串是“随机”的,只有1. 一方提供的字符串 2. 公平随机数 两种东西。第一种就是我上面说的,运营方提供的码,你也不知道这玩意怎么来的,所以他爱怎么来就怎么来。第二种我上面说了,必须基于额外的算法才能生成,且此算法需要每个玩家提供自己的字符串。如果不服可以去看书,或者你自己现在写个算法流程来敲掉现代密码学的根。
  • f
    fuochai
    不你误会了,我的意思是:
    你承不承认这个方案能让运营方无法事先决定出牌顺序,而是真正随机
    我感觉你貌似在说一个能无视顺序都对A有利的牌山决定方案,先不管那个,先说抽令牌这个是不是没发作弊
  • l
    lukesweet
    OK,你说的很清楚了。如果你说的是单局内,你的方案可以让运营方无法对牌山和玩家座位做手脚,那妥妥的(不过前提是抽令牌这个过程可信,因为你的算法里没有具体说明这个随机是怎么来的,我默认用公平随机数了)。
    我从一开始就以为你说的是“公平”。
    如果我们话题确实岔开了,确实没什么可争论的。
  • 茛菪
    啊也就是说假定k生成之后再确定牌山么,那的确没有保证……
  • l
    lukesweet
    这个我也只是接着这楼里的话题在讨论,因为当他们讨论用预设牌山来给氪金玩家作弊的时候,我默认是可以衡量牌山顺序对胜率及点数的影响的,否则整个讨论就没意义了。
    至于这个度量存在不存在?我认为是存在的,至少前几巡是存在的,如果能让一个人手牌初始/迅速获得三个场风/字牌,肯定是大优势。
    我麻将是菜鸟,刚学了几个月,和牌的役都记不全我上面只是把那个问题抽象成数学问题并且加以一个数学学者(曾经是)的见解而已,至于你们麻将玩的溜的觉得这个是否可行我也不清楚,看看笑笑就行了。
  • 田多宇光
    可以一号位选则一个牌(东南西北),生成牌库,拼一起hash出牌堆,然后后面几位轮流猜,猜中的坐庄。而且需要+id避免彩虹表
  • l
    lukesweet
    私下详聊之后,@fuochai的算法是合理且公平的。这个问题并不等价于公平随机数,而是更接近于公平分配。
    我前面都理解错了,给鸟老师道个歉。
  • 希望之异热同心
    泥潭不愧是程序员论坛。。。。
  • 你的全家
    给出随机数算法

    由四位用户生成初始种子(输入这个操作对用户不友好,可以直接用id+游戏开始时间戳之类的) 公示种子

    用种子和算法生成牌山

    用牌山头四张牌确定座位

    记录用户操作

    这样整场都可以第三方稳定复现避免黑箱
  • 波卡帕马
    有个fc麻将,抽到顺刻可以增加气槽,满了可以高概率抽到需要的牌。
  • n
    niyikaowo
    有的。搜汪汪录。ab站都有。各种神棍

    —— 来自 samsung SM-G9500, Android 8.0.0上的S1Next-鹅版v2.1.2
  • 无声沙漏
    反正就下载玩了一轮,太累,删了
  • g
    gzwind
    我打了一盘十三幺之后两天都没开过胡了
  • 玛勒格碧德
    最近开始玩雀🐔

    就是B站哪个……

    前几天一个傻屌连续两次海底捞点炮

    今天下午才第一把,我对家一炮双响

    我胡13000,我下家胡13000直接劝退……
  • g
    gkstill
    这游戏配牌倾向于给玩家发重复的牌,玩家能比较容易的摸到对子和刻子。这大概是为了新手也能愉快的玩耍吧,毕竟这些人很多,人多了氪的人才多。同时这样的配牌也导致容易出大牌,更加吸引新人。刚开始打的时候,打了大概50局就和两次役满(铁头娃点的**)。四暗刻也很容易做。

    还有一点就是经常会出现内定气运之子,配牌好的一批,用jio打都能赢。你怎么打都不会比他快,好消息是大家被内定机会一样,没人会被针对。其实我很好奇这个到底是大家的错觉,还是真的能在算法上实现(在提前算好牌山的前提下)

    目前没感觉氪金会对游戏本身有什么影响。

    —— 来自 Sony G8142, Android 9上的S1Next-鹅版v2.1.2
  • 在海岸
    打个麻将还能怪算法,就不能承认自己菜吗
  • 6
    6847651
    没有10-11张我根本不考虑国士
  • G
    GameTheory
    刚才两局 第一局3家杠,第二局2家杠,我是觉得这配牌比较奇特了XD
  • 蕊本子
    通过氪金能(变相改变牌型 这游戏离下线就不远了

    -- 来自 能手机投票的 Stage1官方 Android客户端
  • x
    xsl1099
    这个牌不弃和点可能性太高了