概率论与数理统计学习:随机变量(一)——知识总结与C语言案例实现

Hello,大家好

这是第三期概率论与数理统计的学习,我将用这篇博客来整理我所学习的内容,及用C语言去做例题的过程。
在这里插入图片描述
那么这一期要学习的是随机变量的定义离散型随机变量。还是一样,先总结知识点在再进行C语言案例实现。在这里插入图片描述

随机变量的定义

啥是随机变量?

我们常把随机试验的结果与实数对应起来,也就是把随机试验的结果进行数量化。那么什么又是数量化呢?不要着急,先给出随机变量的定义:

定义:设 E E E是随机试验, Ω \Omega Ω是其样本空间。如果对于每个 w ∈ Ω w \in \Omega wΩ,总有一个实数 X ( w ) X(w) X(w)与之对应,则称 Ω \Omega Ω上的实值函数 X ( w ) X(w) X(w) E E E的一个随机变量。

从定义可以知道,随机变量是一个函数,它的自变量是随机试验的结果(也就是样本点)。那么随机试验结果的数量化就是将这个结果用某个具体的值来替代。例如,我们进行一次掷硬币的试验,它的结果只有正面朝上( w 1 w_{1} w1)或反面朝上( w 2 w_{2} w2),然后再用1来表示正面朝上,0表示反面朝上,于是就有: X ( w 1 ) = 1 , X ( w 2 ) = 0 X(w_{1})=1,X(w_{2})=0 X(w1)=1,X(w2)=0,这就是所谓的数量化。

如果将 X ( w ) X(w) X(w)简记为 X X X,且试验的所有结果( w 1 , w 2 , . . . , w n w_{1},w_{2},...,w_{n} w1,w2,...,wn)都能用一个具体的实数( X ( w 1 ) , X ( w 2 ) , . . , X ( w n ) X(w_{1}),X(w_{2}),..,X(w_{n}) X(w1),X(w2),..,X(wn))来表示,则可用随机变量 X X X来描述随机事件。要注意 X X X是表示一个函数!!!!

下面再举例说明:

例如掷硬币中,可用 X = 1 X=1 X=1表示 w 1 w_{1} w1:正面朝上,用 X = 0 X=0 X=0表示 w 2 w_{2} w2:反面朝上。那么 P ( X = 1 ) P(X=1) P(X=1)就表示正面朝上的概率, P ( X = 0 ) P(X=0) P(X=0)表示反面朝上的概率。

总结:之前我们都是用语言来具体描述一个试验的结果(也就是一个随机事件),引入随机变量后我们就可以用一个具体的值来表示一个随机事件(其实也不一定是具体的值,例如掷骰子中, X ≤ 4 X\leq4 X4就可以表示掷到的点数小于4这一事件)。

离散型随机变量

随机变量也有很多种类型,常见的随机变量,根据其可能取值的整体情况,分为两大类:离散型连续型。那么我们首先介绍介绍离散型~

☁️ 离散型随机变量

离散离散,啥是离散?科学的解释即连续的反义词就是离散,离散就是不连续。

那么对于随机变量 X X X,如果它只可能取有限个可列无限个(虽然是无限个,但可以一个一个地排列起来)值,则称其为离散型随机变量。

这样说得我都有点摸不着头脑了,还是举几个例子:

  1. 掷硬币中,随机变量 X X X只可能取0和1两个值,所以, X X X是离散型随机变量。
  2. 电梯在一年中发生故障的次数,随机变量 X X X只可能取0,1,2,…无限个,但是可以一个一个地排列起来,所以 X X X是离散型随机变量。

那么再举一个连续性随机变量的例子作为对比:

例如,灯泡的使用寿命,对于随机变量 X X X,它的取值不能一个一个地排列,而是充满了一个区间,所以 X X X是连续性随机变量。

☁️ 离散型随机变量的概率分布

设离散型随机变量 X X X所有可能取的值为 x 1 , x 2 , . . . x_{1},x_{2},... x1,x2,...

那么有 P { X = x k } = p k , k = 1 , 2 , . . . P\{X=x_{k}\}=p_{k},k=1,2,... P{X=xk}=pk,k=1,2,...
这些 p k p_{k} pk满足:
{ p k ≥ 0 , k = 1 , 2 , . . . ∑ k = 1 ∞ p k = 1 \begin{cases} p_{k}\geq 0,k=1,2,...\\ \sum_{k=1}^\infty p_{k}=1\\ \end{cases} {pk0,k=1,2,...k=1pk=1

概率分布体现了随机变量取各个可能值得概率的分布情况。

☁️ 常见的离散型随机变量的概率分布

☀️ 两点分布

若随机变量 X X X只可能取0或1两个值,其概率分布为
P { X = 1 } = p P\{X=1\}=p P{X=1}=p
P { X = 0 } = q P\{X=0\}=q P{X=0}=q
其中, 0 < p < 1 , q = 1 − p 00<p<1,q=1p,则称 X X X服从参数为p的两点分布或(0-1)分布,记为 X X X~ B ( 1 , p ) B(1,p) B(1,p)

☀️ 二项分布

首先记住,二项分布就是一次试验只有两种结果,将这个试验进行n次。

将试验 E E E在相同条件下重复进行n次,每次的结果都相互独立,即每次试验结果出现的概率都不依赖于其它各次试验的结果,则称这n次试验是相互独立的。

设试验 E E E只有两个结果: A A A A ‾ \overline A A,记 P ( A ) = p , P ( A ‾ ) = 1 − p , 0 < p < 1 P(A)=p,P(\overline A)=1-p,0P(A)=p,P(A)=1p,0<p<1,将试验 E E E独立地重复进行n次,则称这n次独立重复的试验为n次伯努利试验,简称伯努利试验

下面给出二项式的公式: P { X = k } = C n k p k ( 1 − p ) n − k P\{X=k\}=C_{n}^kp^k(1-p)^{n-k} P{X=k}=Cnkpk(1p)nk
该公式的意义就是:进行n次试验,有 k k k次结果为 A A A的概率。

记为 X X X~ B ( n , p ) B(n,p) B(n,p)

☀️ 泊松分布

如果随机变量 X X X的概率分布为: P { X = k } = λ k k ! e − λ , k = 0 , 1 , 2 P\{X=k\}=\frac{\lambda^k}{k!}e^{-\lambda},k=0,1,2 P{X=k}=k!λkeλ,k=0,1,2
那么就称随机变量 X X X服从参数为 λ \lambda λ的播=泊松分布,记为 X X X~ P ( λ ) P(\lambda) P(λ)

λ \lambda λ是啥?它是一个常数,经常题目中会给出。这里就不多做讨论了,下面开始C语言案例的实现!!!!
在这里插入图片描述

C语言案例实现

在做题之前呢,首先写出要三种常见的离散型随机变量的概率分布的算法,别怕难!你难我也难
在这里插入图片描述
那么首先是两点分布(Two-Point Distrubution),可别看它简单啊,一样要动手写一些:

// m denotes the one of the two results ——m代表两种结果的一种结果
// n denotes the another result ——n代表两种结果中的另一种
void TPDistrbution(float m,float n)
{
	// p denotes the posibility of m; ——p代表m发生的概率
	// q denotes the posibilitu of n; ——q代表n发生的概率,也就是1-p
	float p = m / (m + n);
	float q = n / (m + n);
	printf("The posibility of m is :%f.\n",p);
	printf("The posibility of n is :%f.",q);
}

然后呢就是二项分布(Binary Distrubution):

#include 
// combined algorithms ——组合算法
// it means the results of select m items in n items ——从n个中选m个的可能性
int Combination(int n,int m)
{
	int sum = 1,p = 1;
	for( ; m > 0 ; m--)
	{
		sum *= n--;
		p *= m;
	}
	return sum/p;
}

// in n tests,the result you expect will happen k times ——n次试验中,你期待的结果发生了k次
// and in one test,the posibility of it is p ——一次试验中,你期待的结果发生的概率为p
float BinDistrubution(int n,int k,float p)
{
	float _P;
	_P = Combination(n,k);
	for(int i = 0 ; i < k ; i++)
		_P *= p;
	for(int i = 0 ; i < n - k ; i++)
		_P *= (1 - p);
	return _P;
}

int main()
{
	// in five shooting tests,calculate the the posibility that you only make two shots ——在5次射击中,求你只射中两次的概率
	// the posibility of every time you make shot is 0.6 ———你每一次试验的概率为0.6
	float P = BinDistrubution(5,2,0.6);
	printf("%f",P);
	return 0;
}

紧接着就是那个啥泊松分布,不过这个泊松分布设计到了自然数 e e e,它的后面可是有好多位小数的啊
在这里插入图片描述
不过咱自然不能服输,用C语言将 e e e求出来!

首先呢,我们要知道 e e e的计算公式: e = ∑ n = 0 ∞ 1 n ! e=\sum_{n=0}^\infty\frac{1}{n!} e=n=0n!1
同时我们也不能取 e e e小数点后面的全部哇,所以只需要精确到小数点后6位即可。

#include 
float Figure_e(int n)
{
	float e = 1;
	int sum = 1;
	for(int i = 1 ; i <= n ; i++)
	{
		sum *= i;
		e += 1.0 / sum;
	}
	return e;
}

int main()
{
	float a = Figure_e(20);
	printf("%.6f",a);
	return 0;
}

概率论与数理统计学习:随机变量(一)——知识总结与C语言案例实现_第1张图片
好!
在这里插入图片描述
go on!
泊松分布(Poisson Distrubution):

#include 
#include 
float Figure_e()
{
	float e = 1;
	int sum = 1;
	for(int i = 1 ; i <= 20 ; i++)
	{
		sum *= i;
		e += 1.0 / sum;
	}
	return e;
}

// w denotes the parameter,and k denotes the result you expect ——w表示参数λ,k表示你所期待的结果
float PoiDistrubution(float w,int k)
{
	// figure out e first ——先把e算出来
	float e = Figure_e();
	// _P denotes the posibility of the result that you expect to happen ——_P表示你所期望的结果发生的概率
	float _P;
	// first figure out w to the k ——先将参数λ的k次方计算出来
	if(k == 0)
		_P = 1;
	else
		_P = pow(w,k);
	// cause w might be less than 1,so we better use the library function ——因为λ可能小于1,所以我们用库函数来求e的负λ次方
	_P *= 1.0 / pow(e,w);
	// according to the poisson formula,we need to divide by k! ——根据泊松公式,我们还需要除以k的阶乘 
	int sum = 1;
	for(int i = 1 ; i <= k ; i++)
	{
		sum *= i;
	}
	_P /= sum;
	return _P;
}

各种分布的代码有了,开始实战。

  1. 电子线路中装有两个并联继电器,假设这两个继电器是否接通具有随机性,且彼此独立。已知每个继电器接通的概率为0.8,记 X X X为线路中接通的继电器的个数。1)求 X X X的概率分布。2)线路接通的概率。

1)

#include 
int main()
{
	// A1 denotes the possibility  of one of the relays was plugged on,and A2 denotes the posibility of another was plugged.
	// A1表示其中一个继电器被接通的概率,A2表示另一个继电器被接通的概率
	float A1,A2;
	// p denotes the posibility that the relay was plugged on ——p表示继电器被接通的概率
	float p = 0.8;
	// use an array to store the possibility distrubution ——用一个数组来存储概率分布
	float a[3] = {0};
	// use poss to record the possbility every time we have judged if the relay was plugged on ——用poss来记录每次判断一个继电器被接通或未被接通的概率
	float poss = 1;
	// 0 denotes the relay wasn't plugged ——0表示继电器未被接通
	// 1 denotes the relay was plugged ——1表示继电器被接通
	for(int i = 0 ; i < 2 ; i++)
	{
		i == 0 ? (poss *= 1 - p) : (poss *= p);
		for(int j = 0 ; j < 2 ; j++)
		{
			j == 0 ? (poss *= 1 - p) : (poss *= p);
			a[i + j] += poss;
			j == 0 ? (poss /= 1 - p) : (poss /= p);
		}
		i == 0 ? (poss /= 1 - p) : (poss /= p);
	}
	for(int i = 0 ; i < 3 ; i++)
		printf("X = %d,p%d = %.2f\n",i,i,a[i]);
	return 0; 
}

概率论与数理统计学习:随机变量(一)——知识总结与C语言案例实现_第2张图片
2)分析:什么情况线路被接通?因为这两个继电器是并联的,所以任意一个被接通整个线路就可以被接通。也就是说我们排除它不被接通的情况即可。当然我们也可以求它被接通的所有情况(只需对上述代码稍作改动)。这里的做法是求出它被连通的所有情况的概率总和。

#include 
int main()
{
	float A1,A2;
	float p = 0.8;
	float poss1 = 1,poss2 = 0;
	for(int i = 0 ; i < 2 ; i++)
	{
		i == 0 ? (poss1 *= 1 - p) : (poss1 *= p);
		for(int j = 0 ; j < 2 ; j++)
		{	
			j == 0 ? (poss1 *= 1 - p) : (poss1 *= p);
			if(i + j >= 1)
				poss2 += poss1;
			j == 0 ? (poss1 /= 1 - p) : (poss1 /= p);
		}
		i == 0 ? (poss1 /= 1 - p) : (poss1 /= p);
	}
	printf("The possbility of the incident X>=1 is :%.2f.",poss2);
	return 0;
}

概率论与数理统计学习:随机变量(一)——知识总结与C语言案例实现_第3张图片

  1. 设每天每辆出租车出现故障的概率为0.02,某出租汽车公司共有出租车400辆,试求一天内没有出租车出现故障的概率。

分析:相当于是将观察辆出租车一天是否出现故障看成一次试验。每辆出租车是否出现故障与其它出租车故障无关。也就是说这个题是一个二项分布。

int main()
{
	// p denotes the possibility that the car breaks down ——p表示一辆出租车出现故障的概率
	float p = 0.02;
	printf("The possibility of the incident that no cars break down is :%f",BinDistrubution(400,0,p));
	return 0; 
}

在这里插入图片描述

  1. 某一城市每天发生火灾的次数 X X X服从参数 λ = 0.8 \lambda=0.8 λ=0.8的泊松分布,求城市一天内发生3次或3次以上火灾的概率。

分析:因为它一天内发生火灾的次数没有上限,所以我们最好是排除它一天发生三次火灾一下的概率。

int main()
{
	float w = 0.8;
	float poss = 1 - PoiDistrubution(w,0) - PoiDistrubution(w,1) - PoiDistrubution(w,2);
	printf("The possibility of the incident X>=3 is : %f.",poss);
	return 0;
}

这期学习到此结束~~下期再见,各位一起加油!
概率论与数理统计学习:随机变量(一)——知识总结与C语言案例实现_第4张图片

你可能感兴趣的:(概率论与数理统计学习,概率论,学习,c语言)