lpzhg
发表于 2019-2-8 08:14
其实日麻最大的问题是黄牌了之后也没有什么太大的惩罚,搞得大家都拼命防守,宁可不赢也不点炮,特别没意思
noneoneone
发表于 2019-2-8 08:31
反过来想,如果开发个超能力麻将会不会有意思。系统自动给所有人提升凑大牌的几率,每场都是哐哐哐的轰个过瘾。
downforce
发表于 2019-2-8 08:34
刚刚点了四暗刻单骑,我不就是碰个厂风听个牌打张客风嘛
bronzitro
发表于 2019-2-8 08:41
我也想玩超能力麻将,棋手可以点天赋,比如更容易摸到老头牌,更容易摸到对子,杠之后摸到和牌的概率变大
wuuuuuud
发表于 2019-2-8 08:51
yoyokrieg 发表于 2019-2-7 22:36
我有个疑问:麻雀电子游戏可以宣称“开局时,牌山已定”,并且提供验证手段。但没有宣称“对各个玩家的配 ...
给出随机算法和种子的一部分(比如四家用户名+门风)
403权限不够
发表于 2019-2-8 10:37
flytomars 发表于 2019-2-7 21:43
我一直有个疑问啊
棋牌类游戏有没有可能通过人为上调大牌的概率来提高刺激程度?
麻将不知道
斗地主的话,联众和qq都会倾向于发大牌
西洛克
发表于 2019-2-8 10:43
yoyokrieg 发表于 2019-2-7 22:36
我有个疑问:麻雀电子游戏可以宣称“开局时,牌山已定”,并且提供验证手段。但没有宣称“对各个玩家的配 ...
讲道理,这样做我觉得成本很高
flash520
发表于 2019-2-8 10:48
yoyokrieg
发表于 2019-2-8 11:28
flash520
发表于 2019-2-8 12:31
fuochai
发表于 2019-2-8 12:37
yoyokrieg 发表于 2019-2-7 22:36
我有个疑问:麻雀电子游戏可以宣称“开局时,牌山已定”,并且提供验证手段。但没有宣称“对各个玩家的配 ...
可以是可以,但没必要吧。我氪800前后感觉没差
技术上想整其实也可以做到,但不如直接一句“信不过别玩”来得方便。
Patlain
发表于 2019-2-8 12:38
yoyokrieg 发表于 2019-2-8 11:28
看了大家的回复,我的思路有些开拓了。
大抵上可以通过玩家交互的方式,来确定“配牌+发牌”流程的公平:
1 ...
70w猴消费厅调查下来不是没作假么?
hamartia
发表于 2019-2-8 12:41
就像楼上S1ER说的,反正你没有实际的经济损失,那就play呗
虽然这类棋牌游戏的算法自然是后出的比老游戏精密,但一样是拼规律。当年的扑克类eroge《ACE SPADES》,我就算手牌不看只管全都盲换,照样能有一定几率三次连胜把对面的女孩子脱得光溜溜的。
fuochai
发表于 2019-2-8 12:45
yoyokrieg 发表于 2019-2-8 11:28
看了大家的回复,我的思路有些开拓了。
大抵上可以通过玩家交互的方式,来确定“配牌+发牌”流程的公平:
1 ...
看了半天,我并没有看出你这个方案怎么保证令牌是“真”由玩家决定的(仍有翻令牌前令牌不确定,即先确定顺序再由玩家的选择决定令牌的可能)
我的想法是翻之前由令牌顺序(东南西北汉字)+随机的英文字母的字符串生成一个md5值,在翻令牌前即公开。
翻完后和回放都可以公开这个令牌顺序+随机英文字母和md5以证明没有令牌顺序的造假
yych0611
发表于 2019-2-8 14:40
舌怪
发表于 2019-2-8 15:41
lpzhg 发表于 2019-2-8 08:14
其实日麻最大的问题是黄牌了之后也没有什么太大的惩罚,搞得大家都拼命防守,宁可不赢也不点炮,特别没意思 ...
这只能叫特色吧,不能说是问题
yoyokrieg
发表于 2019-2-8 15:41
cryczp
发表于 2019-2-8 16:02
noneoneone 发表于 2019-2-8 08:31
反过来想,如果开发个超能力麻将会不会有意思。系统自动给所有人提升凑大牌的几率,每场都是哐哐哐的轰个过 ...
资中麻将欢迎你....
只有筒条两色牌...
lukesweet
发表于 2019-2-8 16:20
本帖最后由 lukesweet 于 2019-2-8 16:22 编辑
fuochai 发表于 2019-2-8 12:45
看了半天,我并没有看出你这个方案怎么保证令牌是“真”由玩家决定的(仍有翻令牌前令牌不确定,即先确定 ...
你的想法很棒,但是翻令牌的随机性还需要一轮额外的操作来保证,此操作又涉及到一次用户选定暗码并广播的行为,稍微有点绕圈子了。
直接一点的解决方案是,随机生成一组口令,生成md5并广播,然后所有人各自输入一个口令,按东南西北顺序拼接至初始口令后,根据这个长口令生成牌山并分发。口令的确定性通过预广播的md5保证,牌山的确定性也可以通过对口令的控制权保证。
总之每个玩家各自给出暗码这件事一定程度上是必须的,否则玩家对暗码没有控制权的情况下,换码和信息泄露两个矛盾是不可调和的。甚至这个口令不能是简单的选择题(比如让用户按喜好选白发中之一),否则重复试验可以挑出一个无论大家如何选择都可以使结果偏好某个人的初始码(之前提到的翻令牌也有这个问题)。
小五的拖鞋
发表于 2019-2-8 16:43
进来看到楼主的抱怨,本来只想说句这情况很正常,然后往下一看这楼的走向,我只能说,不愧是程序员论坛
点炮,点大炮,吃四,被飞,被按在地上锤都很正常,这都输不起没法玩了,至少先打300个半庄再来抱怨吧
顺便楼主自己打得也有点问题,起手就把123万的面子拆了,建议学习下基础牌效理论,打多了总会时来运转,日麻很好玩的
nausicaa__
发表于 2019-2-8 16:52
downforce 发表于 2019-2-8 08:34
刚刚点了四暗刻单骑,我不就是碰个厂风听个牌打张客风嘛
打到第二排最后第三排开始的巡目,剩三枚字牌很可疑,危险度我觉得几乎和生张类似.客风如果有人打出一张,其他家手上有单张会更倾向于打出来,一直不出来是有很大概率成对子
不过这里我也会打北了.反正听牌其它也没的打的
fuochai
发表于 2019-2-8 18:58
lukesweet 发表于 2019-2-8 16:20
你的想法很棒,但是翻令牌的随机性还需要一轮额外的操作来保证,此操作又涉及到一次用户选定暗码并广播的 ...
你这个不得玩家输一串字符,我那个只需点击一次……
对程序而言你的方案可能更简洁,但玩家不这么想啊
每一局都要重输
lukesweet
发表于 2019-2-8 19:26
本帖最后由 lukesweet 于 2019-2-8 19:31 编辑
fuochai 发表于 2019-2-8 18:58
你这个不得玩家输一串字符,我那个只需点击一次……
对程序而言你的方案可能更简洁,但玩家不这么想啊
每 ...
不不,你没理解我意思,我那一楼里的观点和内容并不是出于算法的简洁性而提的,而是出于修补你算法的缺陷(无意冒犯)。
主要是因为你的算法存在如下两个问题:
1. 理论上运营方可以通过一定的手脚,能够在不违反你提出的规则的条件下,使得某个特定玩家的牌序特别好。而且关于这一点无论你如何改进,只要你永远是鼠标点一下(意味着选项集size较小),这一“手脚”的复杂度代价极低导致可行(具体见我上个楼的最后)。
2. 你没有说明如果运营方在随机翻令牌这一步骤上做手脚怎么预防。如果不设计算法单独处理,那么整个机制是不可信的,但如果单独设计这个部分,那么又涉及到了一个输入暗码的问题,详细见公平随机数生成问题。
在不输入字符的情况下,这两个问题解决不了任何一个,更何况必须两者同时解决整个算法才能生效。
当然了,整个讨论是建立在不信任运营方的前提下的,要是默认运营方可信,那整个讨论从最初就是无意义的。
fuochai
发表于 2019-2-8 19:35
lukesweet 发表于 2019-2-8 19:26
不不,你没理解我意思,我那一楼里的观点和内容并不是出于算法的简洁性而提的,而是出于修补你算法的缺陷 ...
先生成牌山并公开md5,再来抽令牌,你来告诉我怎么给特定玩家准备牌吧。
不管牌山怎么生成,只要四个人的顺序随机就没法保证,除非所有人的起手都具有那个特性,那有何来的不公平可言
muermaru
发表于 2019-2-8 19:58
fuochai 发表于 2019-2-8 19:35
先生成牌山并公开md5,再来抽令牌,你来告诉我怎么给特定玩家准备牌吧。
不管牌山怎么生成,只要四个人的 ...
有没有特殊处理另说,但是四个人的顺序肯定不是随机的,仔细观察就可以发现第一个加载完的肯定是头庄,那么后面的位置肯定是加载顺序排的
lukesweet
发表于 2019-2-8 20:08
本帖最后由 lukesweet 于 2019-2-8 20:09 编辑
fuochai 发表于 2019-2-8 19:35
先生成牌山并公开md5,再来抽令牌,你来告诉我怎么给特定玩家准备牌吧。
不管牌山怎么生成,只要四个人的 ...
没有冒犯的意思,但我觉得您这说的话比我这只密码学的三脚猫还业余。
如果我没理解错的话,您的意思是东南西北每个人翻一张,所以应该是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),完全是可接受范围。
虚无连斩
发表于 2019-2-8 20:12
雀魂神仙牌感觉和当年鸟笼差不多多
fuochai
发表于 2019-2-8 20:20
lukesweet 发表于 2019-2-8 20:08
没有冒犯的意思,但我觉得您这说的话比我这只密码学的三脚猫还业余。
如果我没理解错的话,您的意思是东南 ...
我是业余咋了?这不妨碍我的方案保证随机
你根本没看明白我第一个关翻牌的回复,就这么简单。
lukesweet
发表于 2019-2-8 20:27
fuochai 发表于 2019-2-8 20:20
我是业余咋了?这不妨碍我的方案保证随机
你根本没看明白我第一个关翻牌的回复,就这么简单。 ...
保证随机?一个规则方案下可以通过漏洞偏袒某个人,这也好意思叫随机?
如果你觉得玩家1胜率显著大于25%也叫随机,那么行了,还要什么算法,你干脆放运营商随便搞得了,反正他也不可能把零氪玩家胜率搞成0是不是?
而且你还没回答如何保证东南西北抽的结果是随机而不是运营商给你先定好的呢。
茛菪
发表于 2019-2-8 20:32
本帖最后由 茛菪 于 2019-2-8 20:34 编辑
lukesweet 发表于 2019-2-8 20:08
没有冒犯的意思,但我觉得您这说的话比我这只密码学的三脚猫还业余。
如果我没理解错的话,您的意思是东南 ...
恩……你考虑一下,如果吧sum_i(Adv(A,k,i))/4定义为0的话,那么因为麻将规则本身玩家跟位置的对称性,sum_k(Adv(A,k,i))应该永远为0的。
fuochai
发表于 2019-2-8 20:34
lukesweet 发表于 2019-2-8 20:27
保证随机?一个规则方案下可以通过漏洞偏袒某个人,这也好意思叫随机?
如果你觉得玩家1胜率显著大于25% ...
我在54楼的:
由令牌顺序(东南西北汉字)+随机的英文字母的字符串生成一个md5值,在翻令牌前即公开。
翻完后和回放都可以公开这个令牌顺序+随机英文字母和md5以证明没有令牌顺序的造假
怎么预先设定玩家的顺序 请你教教我好吗
lukesweet
发表于 2019-2-8 20:40
茛菪 发表于 2019-2-8 20:32
恩……你考虑一下,如果吧sum_i(Adv(A,k,i))/4定义为0的话(也就是完全公平无任何家优势),那么因为麻将 ...
E_A(sum_k(Adv(A,k,i)))是0没错,但是括号内的sum_k(Adv(A,k,i))是个随机数,可以是值域内的任何值
上坂莲华
发表于 2019-2-8 20:47
小五的拖鞋 发表于 2019-2-8 16:43
进来看到楼主的抱怨,本来只想说句这情况很正常,然后往下一看这楼的走向,我只能说,不愧是程序员论坛
不少人默认打断19或者门清
lukesweet
发表于 2019-2-8 20:54
本帖最后由 lukesweet 于 2019-2-8 20:57 编辑
fuochai 发表于 2019-2-8 20:34
我在54楼的:
由令牌顺序(东南西北汉字)+随机的英文字母的字符串生成一个md5值,在翻令牌前即公开。
我也在66#说的很清楚了,只要你的选择范围不大,运营方永远可以通过预先模拟结果,然后筛选出期望结果更偏好特定玩家的初始字符串给你。不需要决定玩家的顺序,也不需要决定牌山的顺序,只要保证结果是倾向于某个人的就行了。简单来说,王思聪来玩的时候,他抽到东的时候,东家摸到好牌的概率更大,他抽到北的时候,北家的好牌概率更大。一切都不是确定的,但是概率可以偏向他(你要是允许4^24的算力,我甚至可以让每一局一定倾向于他)。
至于你说这个随机英文字母的字符串是随机的?不好意思,通用的公平随机数生成算法本身就是需要通过额外的暗码和广播来生成的。如果不会请谷歌或者找本密码学的硕士课程教材来读一下。
如果玩家懒得每次写字符串,永远不可能通过机制的约束来运营方不作弊(使得他指定的某个人获得优势),就这么简单。这个问题和公平随机数生成问题是等价的,人家一群数学家研究了几十年才建立出来的结果,要是你能理解就理解,不理解我也不强求。
再说一遍,我不是故意杠,我就陈述这么一个事实而已,用户想要不费力地保证公平,仅仅凭借哈希这个工具做不到。
茛菪
发表于 2019-2-8 21:01
本帖最后由 茛菪 于 2019-2-8 21:02 编辑
lukesweet 发表于 2019-2-8 20:40
E_A(sum_k(Adv(A,k,i)))是0没错,但是括号内的sum_k(Adv(A,k,i))是个随机数,可以是值域内的任何值
...
我觉得并不是这样的。比如玩家编号为数字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
lukesweet
发表于 2019-2-8 21:09
茛菪 发表于 2019-2-8 21:01
我觉得并不是这样的。比如玩家编号为数字1-4,排列顺序对应东南西北,那么sum_{k=1234,2341,3412,4123}(Ad ...
式子的第一个等号不成立。
这里k会拼接A并决定Adv的随机值,而不是仅仅提供位置的信息值。简单说Adv(A,1234,1)≠Adv(A,2341,2)。
而且在Hash的保证下,Adv(A,·,1)|A几乎可以认为是相互独立的随机值。
fuochai
发表于 2019-2-8 21:11
lukesweet 发表于 2019-2-8 20:54
我也在66#说的很清楚了,只要你的选择范围不大,运营方永远可以通过预先模拟结果,然后筛选出期望结果更偏 ...
你别扯那些没用的,先说说我那个抽令牌的方案,运营方怎么作弊吧。
lukesweet
发表于 2019-2-8 21:14
本帖最后由 lukesweet 于 2019-2-8 21:21 编辑
fuochai 发表于 2019-2-8 21:11
你别扯那些没用的,先说说我那个抽令牌的方案,运营方怎么作弊吧。
说了,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. 公平随机数 两种东西。第一种就是我上面说的,运营方提供的码,你也不知道这玩意怎么来的,所以他爱怎么来就怎么来。第二种我上面说了,必须基于额外的算法才能生成,且此算法需要每个玩家提供自己的字符串。如果不服可以去看书,或者你自己现在写个算法流程来敲掉现代密码学的根。
fuochai
发表于 2019-2-8 21:20
lukesweet 发表于 2019-2-8 21:14
说了,66楼。看不懂我就再复制一遍给你。
东南西北每个人翻一张,所以抽签结果可以抽象成seed=rand()%24 ...
不你误会了,我的意思是:
你承不承认这个方案能让运营方无法事先决定出牌顺序,而是真正随机
我感觉你貌似在说一个能无视顺序都对A有利的牌山决定方案,先不管那个,先说抽令牌这个是不是没发作弊
LHO
发表于 2019-2-8 21:20