首页 > 其他分享 >游戏当中的秘密

游戏当中的秘密

时间:2024-02-06 21:55:07浏览次数:26  
标签:pr sz 游戏 int double ll 秘密 long 当中

因为我昨天玩游戏被骗,所以特此记录。(在飞机上算的,笑)

概率的游戏

假设现在有红、黄、蓝 \(3\) 种球各 \(8\) 个,让你摸出 \(12\) 个球(完全随机)。一共玩恰好 \(5\) 局游戏。假设有这个表:

你抽到的组合 你获得的钱数
543 -30
444 5
642 5
552 15
633 20
651 50
732 80
741 100
750 150
831 300
660 800
822 2000
840 5000

其中 \(abc\) 指的是按照抽的个数从大到小的个数。一共有 \(13\) 种组合。如果是你,你会玩吗?

如果算一下概率,即 \(abc\) 的概率是 \(\displaystyle \frac{\texttt{f}(a,b,c)\times \binom{8}{a}\times \binom{8}{b}\times \binom{8}{c}}{\binom{24}{12}}\),其中 \(\texttt{f}(a,b,c)\) 为 \(1\) 如果 \(sz=|\{a,b,c\}|=1\),\(3\) 如果 \(sz=2\),\(6\) 如果 \(sz=3\)。

那么,概率如下表:

你抽到的组合 你抽到这个组合的概率(\(\times 100\%\))
444 12.68418
543 48.70725
552 9.74145
633 9.74145
642 12.17681
651 2.78327
660 0.08698
732 2.78327
741 0.99403
750 0.09940
822 0.08698
831 0.09940
840 0.01553

如果计算 \(5\) 局你期望获得的钱数呢……是 \(-8.44042\)!是不是被骗了呢?

生成程序
#include <bits/stdc++.h>

using namespace std;

using ll = long long;

const int N = 60;

ll C[N][N];

void init(){
	C[0][0]=1;
	for (int i=1; i<N; i++){
		C[i][0]=1;
		for (int j=1; j<=i; j++){
			C[i][j]=C[i-1][j-1]+C[i-1][j];
		}
	}
}

ll cal(int a,int b,int c){
	set<int> st;
	st.insert(a),st.insert(b),st.insert(c);
	int sz=st.size();
	if (sz==1)return 1;
	if (sz==2)return 3;
	if (sz==3)return 6;
}

struct node {
	int a,b,c;
	long double pr;
	node (int _a,int _b,int _c,long double _p){
		a=_a,b=_b,c=_c,pr=_p;
	}
	bool operator < (const node &x) const {
		return pr>x.pr;
	}
};

const double mon[] = {-30,5,5,15,20,50,80,100,150,300,800,2000,5000};

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);

	init();
	ll al=C[24][12];
	long double sum=0;
	vector<node> v;
	for (int a=0; a<=8; a++){
		for (int b=0; b<=8; b++){
			for (int c=0; c<=8; c++){
				if (a+b+c==12 && a>=b && b>=c){		
					ll p=cal(a,b,c)*C[8][a]*C[8][b]*C[8][c];
					long double pr=1.*(long double)p/(1.*(long double)al);
					sum+=pr;
					v.push_back(node(a,b,c,pr));
				}
			}
		}
	}
	sort(v.begin(),v.end());
	int _=5;
	long double pr_mon=0;
	while (_--){
		int id=0;
		for (auto u : v){
			pr_mon+=u.pr*mon[id];
			id++;
		}
	}
	cout<<pr_mon<<endl;
	return 0;
}

无赖的游戏

这里是抽大奖环节!有一个格纸,每一个格子里面都有一个对应的奖品。有 \(4199\) 的 Iphone,也有 \(0.88\) 的红包。更重要的是,大奖(大于 \(3000\))和小奖(小于 \(5\))是交替的(一共偶数个格子,循环)。很傻的人会有一个念头,是不是 \(50\%\) 大奖

游戏规则如下:\(5\) 个骰子,设投出来的和为 \(x\)。那么你从第 \(x\) 格,跳 \(x\) 格就是你的奖品。

看出来了吧。\(2x≡0 \mod 2\)。所以,你只可能跳在偶数格子,即小奖上面!

那你会想,小奖也是有大小的,怎么分配大小呢?你算了一下概率。

你投出来的和 投这个和的概率(\(\times 100\%\))
5 0.01286
6 0.06430
7 0.19290
8 0.45010
9 0.90021
10 1.62037
11 2.63632
12 3.92233
13 5.40123
14 6.94444
15 8.37191
16 9.45216
17 10.03086
18 10.03086
19 9.45216
20 8.37191
21 6.94444
22 5.40123
23 3.92233
24 2.63632
25 1.62037
26 0.90021
27 0.45010
28 0.19290
29 0.06430
30 0.01286

看出来了,是中间高两边低的。像我就是抽到了 \(18\)。

生成程序
#include <bits/stdc++.h>

using namespace std;

using ll = long long;

const int N = 33;

int cnt[N];

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);

	int sum=0;
	for (int a=1; a<=6; a++)
	for (int b=1; b<=6; b++)
	for (int c=1; c<=6; c++)
	for (int d=1; d<=6; d++)
	for (int e=1; e<=6; e++){
		sum++;
		cnt[a+b+c+d+e]++;
	}
	for (int i=5; i<=30; i++){
		long double pr=(long double)(1.*cnt[i])/(long double)(1.*sum);
		cout<<"| "<<i<<"  | "<<fixed<<setprecision(5)<<pr*100.<<"  |"<<endl;
	}
	return 0;
}

结语

大家玩游戏就图个乐子,不要抱什么希望!

标签:pr,sz,游戏,int,double,ll,秘密,long,当中
From: https://www.cnblogs.com/SFlyer/p/18010349

相关文章

  • Python编写游戏有什么注意
    标题:Python游戏开发的注意事项与技巧Python作为一种功能丰富且易于学习的编程语言,在游戏开发领域也有着广泛的应用。然而,在使用Python编写游戏时,开发者需要注意一些特定的技巧和注意事项,以确保游戏的性能、可维护性和用户体验。本文将介绍Python游戏开发中的一些关键注意事项和技巧......
  • [LeetCode] LCP 30. 魔塔游戏
    小扣当前位于魔塔游戏第一层,共有N个房间,编号为0~N-1。每个房间的补血道具/怪物对于血量影响记于数组nums,其中正数表示道具补血数值,即血量增加对应数值;负数表示怪物造成伤害值,即血量减少对应数值;0表示房间对血量无影响。小扣初始血量为1,且无上限。假定小扣原计划按房间编......
  • RTSS 降帧 减少游戏卡顿
    原理:降低帧数,减少CPU/GPU的负担,让GPU可以比较平均地产出视频帧,均匀的帧数可以减少卡顿感。使用方法:下载安装MSIAfterburnerhttps://www.msi.com/Landing/afterburner/graphics-cards(会附带RTSS)打开MSIAfterburner,设置监控功能,对应想要监控的勾选OSD选项,方便查看效果......
  • P2016 战略游戏
    原题链接悟道树形图看成线性结构?code#include<bits/stdc++.h>usingnamespacestd;vector<int>G[1505];intsum[1505][2]={0};voidss(intnow,intfa){sum[now][1]=1;for(inti=0;i<G[now].size();i++){intnext=G[now][i];if(......
  • 为什么开了游戏,玩家进来都说卡
    最近碰到很多用户来联系说玩家玩他的服老是反馈卡,想要知道原因和怎么解决。这边也是总结了一些具体原因可以供大家参考一下。一、服务器硬件服务器硬件方面不够是会导致游戏出现卡的情况,比如CPU内存占用过大等等,可以通过升级CPU和内存或者优化自身程序进行解决。二、玩家多卡很多GM......
  • 【教3妹学编程-算法题】1696. 跳跃游戏 VI
    3妹:好冷啊,冻得瑟瑟发抖啦2哥 :没想到都立春了还这么冷啊~3妹:暴雪、冻雨、大雨,这天气还让不让人活啦!!!2哥 :哎,好多人都滞留的高铁站了,没法回家了3妹:我还不知道今天怎么回家呢,惨。2哥:3妹,要不别回去了吧,我们就地过年3妹:切,这里更冷,每天抖啊抖,跳啊跳才能缓解寒冷,我们家那儿可是有暖气......
  • 探索C语言的数据类型:解密编程世界的核心秘密
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • 探索C语言的数据类型:解密编程世界的核心秘密
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • 缩小数据范围——nc2.4多校_A.新春游戏之数学系列
    目录问题概述思路分析参考代码做题反思问题概述原题参考A.新春游戏之数学系列大致就是给出一个数组,要求求出一个公式的值,有几个数据范围值得注意一下,一是数组的长度为[0,1e6],二是数组元素的和不超过5e7思路分析赛时第一眼准备去分析公式看看有没有可以优化的,用前缀拆分优化......
  • 游戏化互动电子书对数学课程学生翻转学习表现、动机及元认知倾向的影响
    (Effectsof gamifiedinteractivee‑bookson students’flipped learningperformance,motivation,and meta‑cognitiontendency in a mathematicscourse) https://doi.org/10.1007/s11423-021-10053-0一、摘要研究目的:人们普遍认为,翻转学习通过颠倒安排课前......