《离散数学及其应用》第七章 第一节

//持续更新中

chaper71.h

#pragma once

//组合函数 计算 C(n,m)
//从m个数据集中无序的选择n个样本的方法数
__int64 Combination(int n, int m);

//排列函数 计算A(n,m)
//从m个数据集中有序的选择n个样本的方法数
__int64 Permutation(int n, int m);

chapter72.cpp

#include "chapter71.h"

__int64 Combination(int n, int m)
{
	if (n<0||m<0)
	{
		return 0;
	}
	if (n>m)
	{
		return 0;
	}
	//分母的值
	__int64 Deno = 1;
	//分子的值
	__int64 Mole = 1;
	for (int i=1;i<=n;++i)
	{
		Deno *= i;
		Mole *= (m - i+1);
	}
	return Mole/Deno;
}

__int64 Permutation(int n, int m)
{
	if (n < 0 || m < 0)
	{
		return 0;
	}
	if (n > m)
	{
		return 0;
	}
	__int64 iRet = 1;
	for (int i=0;i<n;++i)
	{
		iRet *= (m - i);
	}
	return iRet;
}

exercise71.h

#include "chapter71.h"
#include <algorithm>

//exercise 1
//题目:从一副牌中选出1张A的概率是多少?
//解析:
//样本空间:52中牌中选择一张的牌的方法数为52
//事件:选择一个A的方法数为4
inline double Fun1()
{
	return (double)4 / 52;
}

//exercise 2
//题目:掷筛子时出现6点的概率是多少?
//解析:
//样本空间:掷一个筛子的方法数为6
//事件:出现6点的方法数为1
inline double Func2()
{
	return (double)1 / 6;
}

//exercise 3
//题目:从前100个正整数中随机选出1个奇数的概率是多少?
//解析:
//样本空间:100个正整数的方法数为100
//事件:100个正整数中奇数的个数为50
inline double Func3()
{
	return (double)50 / 100;
}

//exercise 4
//题目:从一年(366)中随机选出1天在4月的概率是多少?
//解析:
//样本空间:366天的方法数为366
//事件:366中选择30天的4月份,方法数为30
inline double Func4()
{
	return (double)30 / 366;
}

//exercise 5
//题目:当掷2个骰子时,其点数之和是偶数的概率是多少?
//解析:点数之不是奇数就是偶数,所以概率为1/2
inline double Func5()
{
	return (double)1 / 2;
}

//exercise 6
//题目:从一副牌中选1张牌是A或者红心的概率是多少?
//解析:
//样本空间:一副牌选择一张的方法数为52
//事件:P(U+V)=P(U)+P(V)-P(U^V)
//选择A的方法数为4
//选择红心的方法数为13
//同时选择A,并且选择红心的方法数为1
inline double Func6()
{
	return (double)(4 + 13 - 1) / 52;
}

//exercise 7
//题目:掷6个硬币,全部头像向上的概率是多少
//解析:
//样本空间:掷硬币的方法数为2^6=64
//事件:全部出现头像向上的方法数为1
inline double Func7()
{
	return (double)1 / 64;
}

//exercise 8
//题目:一手扑克牌有5张,其中包含红心A的概率是多少?
//解析:
//样本空间:一副牌选择5张的方法数为C(5,32)
//事件:一个包含红心A,那么其余的牌的可以任意的选择,所以方法数为C(4,51)
inline double Func8()
{
	return (double)Combination(4, 51) / Combination(5, 52);
}

//exercise 9
//题目:一手扑克牌有5张,其中不包含红心Q的概率是多少?
//解析:
//样本空间:一副牌选择5张的方法数为C(5,52)
//事件:不包含红心Q,也就是在其余的51中选择5张
inline double Fun9()
{
	return (double)Combination(5, 51) / Combination(5, 52);
}

//exercise 10
//题目:一手扑克牌有5张,其中包含方块2和黑桃3的概率是多少?
//解析:
//样本空间:一幅牌选择5张的方法数为C(5,52)
//事件:包含方块2和黑桃3,那么在其余的50张牌中选择3张C(3,50)
inline double Func10()
{
	return (double)Combination(3, 50) / Combination(5, 52);
}

//exercise 11 
//题目;一手扑克牌有5张,其中包含方块2、黑桃3、红心6、梅花10和红心K的概率是多少?
//样本空间:一副牌选择5章的方法数为C(5,52)
//事件:包含方块2,黑桃3、红心6、梅花10和红心K的方法数为1
inline double Func11()
{
	return 1.0 / Combination(5, 52);
}

//exercise 12
//题目:一手扑克牌有5张,其中恰好包含1张A的概率是多少
//样本空间:一副牌中选择5张的方法数为C(5,52)
//事件:恰好包含1张A的方法数为:选择一张A的方法数为C(1,4),其余的不为A的方法数为C(4,48);
inline double Func12()
{
	return (double)Combination(1, 4)*Combination(4, 48) / Combination(5, 52);
}

//exercise 13
//题目:一手扑克牌有5张,其中至少包含一张A的概率是多少?
//样本空间:一副牌中选择5张的方法数为C(5,52)
//事件:至少包含1张A的方法为 1-全部不包含A的方法数。全部不包含A的方法数为C(5,48)
inline double Func13()
{
	return 1 - (double)Combination(5, 48) / Combination(5, 52);
}

//exercixe 14
//题目:一首扑克牌有5张,其中包含5类不同牌的概率是多少?
//样本空间:一副牌中选择5张的方法数为C(5,52)
//事件:5类不同牌的方法数:
//在13种类中选择5中的方法数为C(5,13)
//每个种类的都有4中选择方案
inline double Func14()
{
	return pow(4, 5)*Combination(5, 13) / Combination(5, 52);
}

//exercise 15
//题目:一手扑克牌有5张,其中包含2个对子(两张牌花色不同单类相同)的概率是多少?
//样本空间:一副牌中选择5张的方法数为C(5,52)
//事件:两幅对子的方法数:选择两个对子C(2,13),每个对子的的方法数C(2,4)*C(2,4),其余的在C(1,44)
inline double Func15()
{
	return (double)Combination(2, 13)*Combination(2, 4)*Combination(2, 4)*Combination(1, 44) / Combination(5, 52);
}

//exercise 16
//题目:一手扑克牌有5张,其中包含一手同花顺,即五种牌的花色相同的概率是多少?
//样本空间:一副牌中选择5张的方法数为C(5,52)
//事件:包含一手同花顺的方法数,每种花色的方法数为C(5,13),每种花色的方法数为C(1,4)
inline double Func16()
{
	return (double)Combination(5, 13)*Combination(1, 4) / Combination(5, 52);
}

//exercise 17
//题目:一手扑克牌有5张,其中包含一个顺子,即5张牌的花色相同的概率是多少?
//样本空间:一副牌中选择5张的方法数为C(5,52)
//事件:包含顺子的方法数为:每种花色的顺子的方法数为(1~5)~(10~1),每种花色的都有4中选择方法pow(4,5)

inline double Func17()
{
	return pow(4, 5) * 10 / Combination(5, 52);
}

//exercise 18
//题目:一手扑克牌有5张,其中包含一个同花顺子,即5张牌的类是连续的且是同一花色概率是多少?
//样本空间:一幅牌中选择5张的方法数为C(5,52)
//事件:包含同花顺子的方法数为:每种花色的顺子的方法数为(1~5)~(10~1)即一共10种,每种花色的方法数为C(1,4)
inline double Func18()
{
	return (double)Combination(1, 4) * 10 / Combination(5, 52);
}

//exercise 19
//题目:一手扑克牌有5张,其中包含5张不同类的牌且不包含一个同花顺或一个顺子的概率是多少?
//样本空间:一副牌中选择5张的方法数为C(5,52)
//事件:五种不同类的方法数为:C(5,13)*pow(4,5) - 顺子的方法数: pow(4,5)*10 - 同花的方法数:4*C(5,13) + C(1,4)*10
inline double Func19()
{
	return (pow(4, 5)*Combination(5, 13) - pow(4, 5) * 10 - 4 * Combination(5, 13) + Combination(1, 4) * 10) / Combination(5, 52);
}

//exercise 20
//题目:一首扑克牌有5张,其中包含同一花色的10.J,Q,K,A的概率是多少?
//样本空间:一副牌中选择5张的方法数为C(5,52)
//事件:同一花色的10~A的方法数为4
inline double Fun20()
{
	return (double)4 / Combination(5, 52);
}

//exercise 21
//题目:一个骰子掷6次都不出现偶数点的概率是多少?
//解析:掷一次骰子的不出现偶数的概率是1/2,那么全部不出现偶数的概率是pow(1/2,6)
inline double Func21()
{
	return pow(0.5, 6);
}

//exercise 22
//题目:随机选取一个不超过100的正整数,能够被3整数的概率是多少?
//样本空间:100的正整数选择一个数的方法数为100
//事件:能够被3整除的方法数为:100/3 = 33
inline double Func22()
{
	return double(33) / 100;
}

//exercise 23
//题目:随机选取一个不超过100的正整数,能够被5或者7整除的概率是多少?
//样本空间:100个正整数选择一个数的方法数为100
//事件:能够被5整除的方法数为:100/5=20 + 能够被7整数的方法数为100/7 = 14 - 能够同时被5和7整除的方法数为:100/35 = 2
inline double Func23()
{
	return (double)(20 + 14 - 2) / 100;
}

//exercise 24
//题目:求从不超过下述正整数中选中6个整数来赢彩票的概率。这里不考选择整数的顺序
//a) 30 b) 36 c)42 d)48
//样本空间:m个正整数的选择6整数的方法数C(6,m)
inline double Func24(int m)
{
	return 1.0 / Combination(6, m);
}

//exercise 25
//题目:求从不超过下述正整数选中6个整数来赢彩票的概率,这里不考虑选择整数的顺序
//a)50 b)52 c)56 d)60
inline double Func25(int m)
{
	return 1.0 / Combination(6, m);
}

//exercise 26
//题目:求从不超过下述正整数中选6个都不中的概率是多少,这里不考虑选择整数的顺序
//分析:
//a)40 b)48 c)56 d)64   
inline double Func26(int m)
{
	return (double)Combination(6, m - 6) / Combination(6, m);
}

//exercise 27
//题目:求从不超过下述正整数中选6个整数,并且恰好选中一个概率,这里不考虑选择整数的顺序
//分析:
//a) 40 b)48 c)56 d)64
//样本空间;从m中选择6个整数的方法数为:C(6,m)
//事件:从正确数中选择一个正确的方法数为C(1,6).其余的从错误中选择C(5,m-6)
inline double Func27(int  m)
{
	return (double)Combination(1, 6)*Combination(5, m - 6) / Combination(6, m);
}

//exercise 28
//题目:美国宾夕法尼亚超级彩票的玩法是,买彩票的人要从前80个正整数中选出7个数。如果7个数是在由宾夕法尼亚彩票委员会选出的11个数中的6就能赢大奖,那么一个人赢大奖的概率是多少?
//解析:
//样本空间:80个正整数选择7个数的方法数为C(7,80)
//事件:11个数中6个的方法数为:C(6,11)*C(1,74)
//这个题的答案有问题,源答案的为C(7,11)/C(7,80)
inline double  Func28()
{
	return (double)Combination(6, 11)*Combination(1, 74) / Combination(7, 80);
}

//exercise 29
//题目:在一种彩票中,如果彩票的人选中的8个数正是计算机从不超过100的正整数中选出的数就能中奖,请问中彩的概率是多少?
inline double Func29()
{
	return 1.0 / Combination(8, 100);
}

//exercise 30
//题目:由计算机从1到40之间(包括1和40在内)选出6个数,如果某人选中的其中的5个(但不是6个)数就能获奖。那么获奖的概率是多少?
//样本空间:从40个数中选出6个方法数为C(6,40)
//事件:恰好选中其中的5的方法数为:C(5,6)*C(1,34)
inline double Func30()
{
	return (double)Combination(5, 6)*Combination(1, 34) / Combination(6, 40);
}

//exercise 31
//题目:假设100个人进入决赛并且随机选择不同的人作为一等奖、二等奖和三等奖的获奖者。如果米切尔是进入决赛的人之一,她中奖的概率是多少?
inline double Func31()
{
	return 3.0 / 100;
}

//exercise 32
//题目:假设100个人进入决赛的并且随机选择不同的人作为一等奖、二等奖和三等奖的获奖者。如果库玛、加纳四、彼得是进入决赛的人,他们每个人都赢的一个奖项的概率是多少?
//解析:相当于从100个人中选中这三个人的概率是多少?
inline double Func32()
{
	return (double)1.0 / Combination(3, 100);
}

//exercise 33
//题目:在一次绘画比赛中,200个人进入决赛,在下述条件下,艾比、巴里、希尔塞牙分别赢的一等奖、二等奖、三等奖的概率是多少?
//a) 如果每个人至多得一个奖
//解析:相当于在200个人中有选择性的选择3个人
inline double Func33_a()
{
	return 1.0 / Permutation(3, 200);
}

//b)如果允许一个人得多个奖
//解析:每个人获奖的概率是1/200,三个都同时获奖的概率是pow(1/200,3)
inline double Func33_b()
{
	return 1.0 / 8000000;
}

//exercise 34
//题目:在一次绘画比赛中,50个人进入决赛,在下述条件下,卜、考林、杰夫、落海你分别赢得一等奖、二等奖、三等奖和四等奖的概率是多少?
//a)如果每个人至多得一个奖
//解析:相当与在50个人中有选择性的选择4个人
inline double Func34_a()
{
	return 1.0 / Permutation(4, 50);
}
//b)如果允许一个人得到多个奖
//解析:每个获奖的概率是1/50,那么四个人分别获奖的概率是pow(1/50,4)
inline double Func34_b()
{
	return 1.0 / pow(1 / 50, 4);
}

//exercise 35
//题目:在轮盘赌中,旋转一个有38个数的轮盘,其中18个数是红的,18个数是黑的,另外两个既不红也不是黑的数是0和00.当轮盘转动的时候,它到达任何特定数字的概率是1/38
//a)轮盘落到1个红色的概率是多少?
//分析:一共38个数,方法数为38,红色数为18个
inline double Func35_a()
{
	return 18.0 / 38;
}
//b)轮盘两次落到某列上的同一个黑数的概率是多少?
//分析:第一个落到一个黑数概率是18/38 第二次落到特定的黑数的概率是1/38
//有问题:原答案为81/361 即 (18/38)*(18*38)  这个概率不是两次都落到黑数的概率
inline double Func35_b()
{
	return 18.0 / (38 * 38);
}
//c)轮盘落到0或者00的概率是多少?
//分析:
inline double Func35_c()
{
	return 2.0 / 38;
}
//d)轮盘旋转5次,5次都不到0或者00的概率是多少
//分析:每次不落到0或者00的概率是36/38
inline double Func35_d()
{
	return pow(36.0 / 38, 5);
}
//e)某次转动轮盘,落到1~6之间(包含1和6在内)的某个数字,但下次转动轮盘却不落到这些数字之间的概率是多少?
//分析:第一次转到这个数范围的概率是6/38,第二次不落到这些数的概率是32/38
inline double Func35_e()
{
	return (double)(6 * 32) / (38 * 38);
}

//exercise 36
//题目:掷2个骰子总点数为8或者3个骰子总点数为8,哪种可能性更大?
//分析:掷2个骰子方法数为6*6
//点数为8的方法数为 (2,6)(3,5)~(6,2) 一共五种
inline double Func36_2()
{
	return 5.0 / 36;
}
//分析:掷3个骰子的方法数为6*6*6 方法数
//点数为8的方法数为:
//当第一个为1的时候(1,1,6)、(1,2,5)、(1,3,4)、(1,4,3)、(1,5,2)、(1,6,1)一共六种
//当第一个为2的时候 (2,1,5)(2,2,4)、(2,3,3)、(2,4,2)、(2,5,1) 一共五种
//当第一个为3的时候(3,1,4),(3,2,3)、(3,3,2),(3,4,1)一共四种
//…………
//当第一个为6的时候(6,1,1)
inline double Func36_3()
{
	return (double)(1 + 2 + 3 + 4 + 5 + 6) / (6 * 6 * 6);
}

//ercise 37
//题目:掷两个筛子总点数为9或者掷骰子总点数为9,哪种可能性更大?
//分析:掷2个筛子的方法数为6*6
//点数为9的方法数为:(3,6)、(4,5)、(5,4)、(6,3)
inline double Func37_2()
{
	return 4.0 / (6 * 6);
}
//分析:掷3个骰子的方法数为6*6*6
//点数为9的方法数为:
//当第一个为1 的时候(1,2,6)、(1,3,5)、(1,4,4)、(1,5,3)、(1,6,2) 一共五种
//当第一个为2的时候(2,1,6)、(2,2,5)、(2,3,4)、(2,4,3)、(2,5,2)、(2,6,1) 一共六种
//当第一个为3的时候(3,1,5)、(3,2,4)、(3,3,3)、(3,4,2)、(3,5,1)、一共五种
//当第一个为4的时候(4,1,4)、(4,2,3)、(4,3,2)、(4,4,1)一共四种
//当第一个为5的时候(5,1,3)、(5,2,2)、(5,3,1) 一共三种
//当第一个为6的时候(6,1,2)、(6,2,1) 一共两种
inline double Func37_3()
{
	return (double)(5 + 6 + 5 + 4 + 3 + 2) / (6 * 6 * 6);
}

//exercise 38
//题目: 设E1和E2是两个事件,如果P(E1^E2)=P(E1)^P(E2),就称E1和E2是独立的。如果把一枚硬币抛掷3次时所有可能的结果构成一个集合,把这个集合的子集看做事件,确定下面的每一对事件是否独立。
//a)E1第一次硬币头像朝下;E2:第二次硬币头像朝上
inline double Func38_a_1()
{
	return 1.0 / 2;
}
inline double Func38_a_2()
{
	return 1.0 / 2;
}
inline double Func38_a_12()
{
	return 1.0 / 4;
}
//所以两个是相互独立的
//b)E1第一次硬币头像向下,E2:在连续3次中有两次单不是3次头像向上
inline double Func38_b_1()
{
	return 1.0 / 2;
}
inline double Func38_b_2()
{
	return 2.0 / 8;
}
inline double Func38_b_12()
{
	return 1.0 / 8;
}

//c)E1第二次硬币头像向下;E2:在连续3此中有两次但不是3次头像向上。
inline double Func38_c_1()
{
	return 1.0 / 2;
}
inline double Func38_c_2()
{
	return 1.0 / 4;
}
inline double Func38_c_12()
{
	return 0.0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值