专栏文章
关于大富翁棋盘的概率问题
休闲·娱乐参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min84a2u
- 此快照首次捕获于
- 2025/12/01 22:07 3 个月前
- 此快照最后确认于
- 2025/12/01 22:07 3 个月前
众所周知,抛两枚骰子的和所得到每个结果的概率是不同的。
在大富翁这个游戏中,玩家们需要轮番投掷两枚骰子并根据所得点数的和移动相应的步数,那么到达每个格子的概率是不是也不相同呢?
很遗憾,当玩家抛骰子的次数足够多时,每个格子的到达概率都是相等的。
先别急着因为无法在大富翁游戏中取得优势而坑你的朋友失望。在一局游戏中,玩家抛骰子的次数时有限的,并且还有“入狱”的特殊规则(即你走到“入狱”格后,立刻传送到“监狱”格)。
以下以我的大富翁游戏为例:
简单经行估算,一局大富翁游戏大概 ,每位玩家行动大约需要花掉 ,一局有四位玩家,所以每名玩家行动 次。
棋盘的大小为 ,一共有 个格子,玩家从 号格子出发,若在 号监狱停留,则传送到 号监狱格子。
很容易写出实验代码( 为实验次数, 为回合数)
CPP#include<bits/stdc++.h>
#define fst first
#define sec second
#define mkp(a,b) make_pair(a,b)
#define usetime() (double)clock () / CLOCKS_PER_SEC * 1000.0
using namespace std;
typedef long long LL;
typedef pair<double,int> pii;
void read(int& x){
char c;
bool f=0;
while((c=getchar())<48) f|=(c==45);
x=c-48;
while((c=getchar())>47) x=(x<<3)+(x<<1)+c-48;
x=(f ? -x : x);
}
int n,m;
LL t[42];
mt19937 rd(time(NULL));
int main(){
read(n),read(m);
for(int i=1;i<=n;i++){
int p=0;
for(int i=1;i<=m;i++){
p+=(rd()%6+rd()%6+2);
p%=40;
++t[p];
if(p==30) p=10;
}
}
vector<pii> v;
for(int i=0;i<40;i++){
v.push_back(mkp(-t[i]*100.0/(1ll*n*m),i));
}
sort(v.begin(),v.end());
for(int i=0;i<(int)v.size();i++){
printf("%02d %.6lf\n",v[i].sec,-v[i].fst);
}
return 0;
}
//^o^
以下为 时的一次实验结果
CPP17 2.922635
16 2.861505
18 2.860815
07 2.805880
19 2.799435
15 2.784575
20 2.752460
08 2.732040
21 2.711380
14 2.697570
22 2.672065
09 2.664390
06 2.649100
24 2.645535
25 2.644220
26 2.629460
23 2.628225
10 2.614985
27 2.596810
12 2.584905
13 2.579745
28 2.577635
11 2.563800
29 2.539870
30 2.521505
05 2.507230
31 2.497835
32 2.414430
04 2.388750
33 2.324970
03 2.290880
34 2.246765
35 2.160670
02 2.142485
36 2.065220
39 1.996690
01 1.995315
00 1.992490
38 1.982090
37 1.953635
显然,监狱规则的加入使 号格获得了巨大优势,由于轮数较少, 号格的优势也较为明显。
综合好几次结果,得出结论:
非常推荐大家在 号格子进行修建,以从你的好盆友那坑赚取更多的钱财。
这两个区间内的格子非常不推荐,浪费感情坑不到钱。
实验结果仅供参考,还要结合游戏中的买地,盖房等实际情况考虑,最大的概率也只不过差了 。
欢迎各路大神添加更加详细的规则,以帮助 OIer 们在大富翁游戏中取得优异的成绩。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...