C++之杀人游戏

kennywang010 2009-03-09 09:52:35
有一个非常经典有趣的游戏,称为杀人游戏。此游戏角色有:好人(m人)、坏人(n人)、村长(1人)、裁判(1人)。角色采用一定方式(如:抓阄)分配。村长、裁判两个角色是公开的,而好人、坏人两个角色则只要裁判和本人心知肚明。其玩法如下:
游戏开始了,裁判说:“天黑了”,这是所有其他角色都低头闭上眼睛(不准作弊!)。然后裁判说:“坏人开始活动”,此时坏人抬起头,并相互商议,杀死一个好人。然后裁判说:“天亮了”,此时所有人抬头,被杀死的那个好人宣布出局。剩下的人在村长的主持下,开始判断杀人凶手。每个人可以根据各人的表情反应,判断并提议杀死自己心目中的坏人。不过最终的裁决权属于村长,综合大家的意见杀死一人。此时裁判宣布此人出局。游戏进入下一轮,由天黑到天亮,再有2人出局,如此反复,直到最后好人先被全部杀死,则游戏结束,“邪恶”的一方战胜了“正义”的一方;而另一个结局则是在大家以及村长的英明决断下,坏人被全部杀死,则“正义”的一方战胜了“邪恶”的一方。
现在,我们的问题是,请写出你的思路,并编写一个C/C++语言程序,求出:在坏人有两个(n = 2)的情况下,需要多少个好人(m = ?),才能够使这个游戏比较公平,也就是说,从概率上说,“正义”的一方与“邪恶”的一方胜利的几率最接近于50%。
...全文
396 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianmodgqb 2009-03-10
  • 打赏
  • 举报
回复
呵,来看看。
sunnyplain 2009-03-10
  • 打赏
  • 举报
回复
OMG
折腾的生活 2009-03-10
  • 打赏
  • 举报
回复
如果连村长也算上的话,当然就不对了,楼上不是有人说村长是多于的嘛,我平时玩的时候,也没有村长啊.
而且,还有可能弹劾的时候大家意见不统一,结果不能kill某个人,我们一般玩的时候都是表决1/2以上才kill那个人
折腾的生活 2009-03-10
  • 打赏
  • 举报
回复
一开始是坏人先行动啊,坏人商量好kill谁,不就kill谁了啊
xuezhuxuan 2009-03-10
  • 打赏
  • 举报
回复
也不一定的,因为坏人知道谁是好人,但好人就不知道谁是坏人了,所以好人有可能会杀错好人,这样就不相等了。
nwpu053660 2009-03-10
  • 打赏
  • 举报
回复
我晕,照你那么说,村长就不是电脑人嘛~~他想杀的人不一定是得票最高的那个是把?
kennywang010 2009-03-10
  • 打赏
  • 举报
回复
村长和裁判确实只起到电脑人的作用,坏人提议也是随机的,他也可以提坏人来搅局,没有玩过这个游戏的人可能觉得坏人肯定是提好人,但是玩这个游戏的时候都是真真假假,假假真真,所以每种情况都有可能!
YEYUNFA 2009-03-10
  • 打赏
  • 举报
回复
我总觉得这个设计有问题.
村长这个角色也不多余,就是相当于电脑人主持下去说天亮...而裁判就是让谁出局的电脑人.

有一款游戏是这样设计的,三个角色:警察.杀手.平民. 分天黑和天亮. 天黑杀手出来杀人,主要是通过投票来杀他们认为可能是警察的人.警察通过投票查杀手身份.天亮被杀手通过投票杀死的人出局! 而天亮杀手.警察.平民又通过投票淘汰Y一人.
hai040 2009-03-10
  • 打赏
  • 举报
回复
18楼概率错了,1个坏人应该要*2
改变自己23 2009-03-10
  • 打赏
  • 举报
回复
好人坏人都不知道有多少...
hai040 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 kennywang010 的回复:]
这里的意思是每个人心中的坏人是不同的,只有坏人和裁判心中的…
[/Quote]
无论如何坏人都需要提议一个人
他会提坏人还是好人?还是随机?

[Quote=引用 13 楼 kennywang010 的回复:]
我觉得如果坏人2个的画,好人是3个人才可以吧,首先3个好人开始就会被kill一个,剩下2好2坏,每边被弹劾掉一个人的概率都是50%,一旦有一方被弹劾出去一个,就宣告那一方输定了.同样,只要好人个数逼坏人多一个,这样双方的胜率就都是50%.
[/Quote]
两好两坯不是1/2
如果不自杀,坏人只提议好人的话,每个人提议坏人的机率是
2/3 2/3 0 0
总共提议中有一个坏人的机率是:2/3*1/3
两个坏人:2/3*2/3
村长选中坏人的机率:2/9*1/4+4/9*1/2

这题应该可以用递归来做
kennywang010 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 VS_LiZhi 的回复:]
我觉得如果坏人2个的画,好人是3个人才可以吧,首先3个好人开始就会被kill一个,剩下2好2坏,每边被弹劾掉一个人的概率都是50%,一旦有一方被弹劾出去一个,就宣告那一方输定了.同样,只要好人个数逼坏人多一个,这样双方的胜率就都是50%.
[/Quote]
为什么好人开始一定会被kill?按你说的话,比如5个人,两个坏人选一个,但是3个好人都选到一个坏人身上,那就是kill掉一个坏人
kennywang010 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 nwpu053660 的回复:]
感觉好没有逻辑的题~~~
第一,“最终的裁决权属于村长,综合大家的意见杀死一人”村长如何综合意见呢?
第二,坏人肯定都心知肚明了,他们如何利用心理呢?
[/Quote]
村长综合就是看所以投票决定那一轮杀谁(可能杀好人也可能杀坏人)
这个题不考虑利用心理的过程,只看结果,程序要估计每一种可能的结果!
折腾的生活 2009-03-10
  • 打赏
  • 举报
回复
我觉得如果坏人2个的画,好人是3个人才可以吧,首先3个好人开始就会被kill一个,剩下2好2坏,每边被弹劾掉一个人的概率都是50%,一旦有一方被弹劾出去一个,就宣告那一方输定了.同样,只要好人个数逼坏人多一个,这样双方的胜率就都是50%.
nwpu053660 2009-03-10
  • 打赏
  • 举报
回复
感觉好没有逻辑的题~~~
第一,“最终的裁决权属于村长,综合大家的意见杀死一人”村长如何综合意见呢?
第二,坏人肯定都心知肚明了,他们如何利用心理呢?
kennywang010 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hai040 的回复:]
引用 9 楼 kennywang010 的回复:
坏人肯定知道哪些是好人啊,不过他们在好人面前要装好人!
自己UP一下,有没人能给点思路,如何判断输赢概率均等!!

题目里没说,“好人、坏人两个角色则只要裁判和本人心知肚明”

“每个人可以根据各人的表情反应,判断并提议杀死自己心目中的坏人。”
这里坏人是杀好人还是坏人?
[/Quote]
这里的意思是每个人心中的坏人是不同的,只有坏人和裁判心中的答案是正确的,坏人可以利用心理让另外的好人猜错这样坏人才会赢啊,裁判晓得每个人的角色,但是好人只晓得本人的角色,就是这个意思!
  • 打赏
  • 举报
回复
刚开始还以为要做个杀人游戏的软件呢..
不过确实已经有人写过这样的软件了.
hai040 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kennywang010 的回复:]
坏人肯定知道哪些是好人啊,不过他们在好人面前要装好人!
自己UP一下,有没人能给点思路,如何判断输赢概率均等!!
[/Quote]
题目里没说,“好人、坏人两个角色则只要裁判和本人心知肚明”

“每个人可以根据各人的表情反应,判断并提议杀死自己心目中的坏人。”
这里坏人是杀好人还是坏人?
老邓 2009-03-10
  • 打赏
  • 举报
回复
进来看看谁杀人了
kennywang010 2009-03-10
  • 打赏
  • 举报
回复
坏人肯定知道哪些是好人啊,不过他们在好人面前要装好人!
自己UP一下,有没人能给点思路,如何判断输赢概率均等!!
加载更多回复(6)
控制台三国杀的说明 这个程序耗费了我三四个星期的时间与精力,不过做的很粗糙,没有实现三国杀的全部功能。 现在这个版本,实现的功能是两个武将一对一,玩家开始时控制A武将,由电脑接管B武将来响应A的出牌;A武将回合 结束后,玩家控制B武将,由电脑接管A武将响应B武将出牌。(不要喷我哦~现在没实现AI控制主动出牌~)如此循环往复,直 到一名武将阵亡,游戏宣告结束。 这个程序使用三国杀标准包,一共104张牌。实现了杀、闪、桃、乐不思蜀、闪电、无中生有、南蛮入侵、万箭齐发 、桃园结义、过河拆桥、顺手牵羊、决斗、五谷丰登(不能自由选牌)、标准回合顺序;没实现借刀杀人、无懈可击、装备( 装备牌可以装上,但是没有功能)、距离、武将技能。没实现的原因是建立框架时没有考虑完全,以致这些功能无法加入其中 。 在游戏中,A武将为“刘备”,座位号0;B武将为“张飞”,座位号1。运行游戏时在命令行显示“>>”时输入“z” 然后回车即可开始游戏(输入h可查看用于调试模式的命令)。 本程序共1417行代码,使用C++语言于VS2010平台编写。我会继续完善它直到实现它所有的功能,现在临近期末考试 ,没有时间继续完善它了,结构说明书也没有写。我的QQ:744676345(羽枫),有问题可以加我询问。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧