今天看了一篇文章《如何制定一个必赢的赌博规则》,讲的是纳什均衡的问题,感觉挺有趣。于是编程实现了一下,发现这个还真是能实现。

关于纳什均衡搜一下网上有很多的资料,这里主要讲的是纳什均衡中硬币正反的问题。

硬币正反问题:

假如你正在图书馆枯坐,一位陌生美女主动过来和你搭讪,并要求和你一起玩个数学游戏。美女提议:“让我们各自亮出硬币的一面,或正或反。如果我们都是正面,那么我给你3元,如果我们都是反面,我给你1元,剩下的情况你给我2元就可以了。”那么该不该和这位姑娘玩这个游戏呢?这基本是废话,当然该。问题是,这个游戏公平吗?

按我们平时正常想是:两面都一样(或正或反)概率为 1/4+1/4,则其数学期望

1/4 * 3 + 1/4 * 1 = 1 ,而一正一反的数学期望也是1/2 * 2 = 1

这看起来貌似是公平的,实际则不然。问题就出在硬币是我们人为控制的,想正面就正面,想反面就反面,而上述情况只应在抛硬币的时候才成立。想一想,如果我们能控制硬币的正面和反面出现的概率,那么赢的概率是不是会提高?

每一种游戏依具其规则的不同会存在两种纳什均衡,一种是纯策略纳什均衡,也就是说玩家都能够采取固定的策略(比如一直出正面或者一直出反面),使得每人都赚得最多或亏得最少;或者是混合策略纳什均衡,而在这个游戏中,便应该采用混合策略纳什均衡。

假设我们出正面的概率是x,反面的概率是1-x,美女出正面的概率是y,反面的概率是1-y。为了使利益最大化,应该在对手出正面或反面的时候我们的收益都相等(不然在这个游戏中,对方可以改变正反面出现的概率让我们的期望收入减少),由此列出方程就是:
3x + (-2)*(1-x)=(-2) * x + 1*( 1-x )

解方程得x=3/8。

同样,美女的收益,列方程:

-3y + 2( 1-y)= 2y+ (-1) * ( 1-y)

解得y也等于3/8,而美女每次的期望收益则是 2(1-y)- 3y = 1/8元。这告诉我们,在双方都采取最优策略的情况下,平均每次美女赢1/8元。而我们则亏1/8元。也即只要美女保持出正面的概率为3/8 就赢,当然这个前提是要不能只玩几局,频数接近3/8

代码实现(比较简单应该都能看懂)

#include <stdio.h>
#include <stdlib.h>
#include "stdafx.h"
#include <stdlib.h>#define SUM_COUNT 10000
int my[SUM_COUNT],your[SUM_COUNT];
int my_money_sum = 0,your_money_sum = 0;/*数组my ,your 模拟每次出手时两人的硬币正反面,正面为1 ,反面为 0 */void get_rand(int sum , int One_count)
{int i = 0;int count = 0;for (i =0 ;i<sum; i++){your[i] = rand()%2;my[i] = rand() % 2;if(my[i] ==1 ){count++;}if(count > One_count){my[i] = 0;}}
}
/*my_money_sum 和 your_money_sum 为双方最后的所得*/
void count_the_money(int sum)
{int i;for(i = 0; i<sum; i++){if( my[i] == your[i]) {if (my[i] == 1){your_money_sum += 3;               }if(my[i] == 0){your_money_sum +=1;}}else if( my[i] != your[i]){my_money_sum += 2;}}
}void main()
{get_rand(SUM_COUNT,SUM_COUNT /8 *3);count_the_money(SUM_COUNT);printf("my_money_sum : %d \n",my_money_sum);printf("your_money_sum : %d \n",your_money_sum);}

结果:

可以看出试验次数越多,赢的几率越高

纳什均衡-- 硬币正反相关推荐

  1. python抛硬币正反面的概率_抛硬币连续N次正面后再次正面的概率是多少呢?有疑虑的话咱用Python模拟一下吧...

    Python不用学,看看你就懂:拿来就能用,用用你就会 无需安装编程软件,把代码拷贝到在线编辑器即可运行 抛硬币连续N次正面后下一次还是正面的概率是多少呢? 这是一个答案似乎很肯定但心里又不踏实的问题 ...

  2. 超好玩的硬币游戏,你会玩吗?

    出门在外,恰逢不巧,你和朋友被困住了,干点什么呢.来几局三国杀?是个不错的提议,但问题是你带牌了吗,没牌怎么打?死理性派想说的是,会玩的孩子怎么不能玩!凑几个硬币,随随便便就能玩一整天.不得不说,硬币 ...

  3. 硬币翻转倍数递增试算

    //有何不足或者问题希望能够得到各位的多多指正,不胜感激 import java.util.Scanner;/*** * @author cc 举例 100枚硬币,最初全部朝下,第一次将所有硬币反转过 ...

  4. java 倍数_Java硬币翻转倍数递增试算实例

    import java.util.Scanner; /** * * @author cc 举例 100枚硬币,最初全部朝下,第一次将所有硬币反转过来, 第二次反转位置是2的倍数的硬币, *       ...

  5. 八字易经算法之用JAVA实现硬币卜卦辅助工具

    世界上没有一种学问比预测未来更重要:而在全人类预测未来的学问中,没有一种比易经卜卦更重要:而在易经卜卦的所有方法中,用硬币卜卦是最简便.最常用的方法之一. -- 陈嘉珉(http://www.chin ...

  6. 数据结构-16枚硬币问题

    数据结构-16枚硬币问题 本题主要考查对图的结构和图的广度优先遍历操作的掌握. 实现效果: 什么是图? 定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其 ...

  7. 猜硬币游戏(c++语言)

    前言 (随机数和随机种子) 1.随机数 rand() 如同字面意思,生成随机数 rand() 产生一个0到0x7ffff,即0到32767之间的随机数 RAND_MAX:表示最大随机数,简而言之就是R ...

  8. 超好玩硬币游戏,你都会玩吗?

    出门在外,恰逢不巧,你和朋友被困住了,干点什么呢.来几局三国杀?是个不错的提议,但问题是你带牌了吗,没牌怎么打?死理性派想说的是,会玩的孩子怎么不能玩!凑几个硬币,随随便便就能玩一整天.不得不说,硬币 ...

  9. 投掷硬币实matlab,Matlab扔硬币程序设计

    扔硬币游戏,三个人,仍硬币,投掷结果和其他两人不同的玩家收走另两人的硬币,ie, +2  -1  -1当有一人硬币没有(破产)为止. function(玩家A硬币数,玩家B硬币数,玩家C硬币数,硬币正 ...

最新文章

  1. python的官方网站地址是什么-python赋值和地址
  2. python爬虫有几种方法_基于Python爬虫的几种方法,python
  3. mysql 5.7变化_从MySQL 5.5到5.7看复制的演进
  4. 神经网络与深度学习笔记
  5. 数学--数论--二次探测定理
  6. Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.
  7. android判断点击次数_Android应用统计-使用时长及次数统计(一)
  8. Tensorflow官方文档学习理解 (五)-卷积MNIST
  9. 关于一次性通过CISSP考试的一点经验分享
  10. 后缀表达式转前缀表达式
  11. Spring web开发用post方法和button遇到http405的一种解决方法
  12. 【问链财经-区块链基础知识系列】 第二十三课 一张纸搞定B2B供应链金融产品设计思路
  13. VHDL数字时钟设计及引脚锁定方法
  14. win7计算机自动关机设置在哪里设置方法,win7自动关机命令是什么 怎么设置
  15. 语音信号处理初学者概念总结
  16. @Spring事务管理
  17. python采用强制缩进的方式使得代码具有极佳的可读性_Python 的教程(2)
  18. Windows-驱动-解决Thinkpad e470c在Win8.1下WiFi无法连接的问题
  19. GhostXP_SP2电脑公司特别版_5.5
  20. SARscape数据处理SAR数据笔记——DINSAR微小形变提取

热门文章

  1. 51单片机 Proteus仿真 电烙铁温度保护系统 DS18B20 温度报警系统
  2. 网页设计与开发-实验报告-4
  3. 学了点技术,我要开始装X了
  4. 双边滤波(bilateral filter)以及联合双边滤波(joint bilateral filter)
  5. DBMS_REPAIR
  6. 滚动穿透及IOS惯性滚动究极解决方案
  7. Cuckoo Hash及其性质
  8. 《CUDA高性能并行计算》----1.4 推荐项目
  9. CSDN程序员俱乐部里活动热闹,成都、杭州、济南活动盛花绽放~
  10. 扰码原理以及matlab实现