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

hello,大家好

这里是第六期概率论与数理统计的学习。我将用这篇博客去整理知识点并在最后用C语言去实现具体案例。

本期知识点:

  1. 随机向量的引入
  2. 二维随机向量及其分布函数
  3. 二维离散型随机变量

下面进入知识总结环节
在这里插入图片描述

💦随机向量

我们知道,随机变量是一个单值函数,也就是一个自变量对应于一个因变量。同C语言中的变量一样,一个变量只能有一个值。

在前面的一些随机试验中,我们常常是用一个随机变量来描述的,但有些随机现象只用一个随机变量来描述是往往不够的。例如,在打靶时,我们需要知道子弹在靶上的位置,可以将靶看作一个平面,然后子弹的位置就是这个平面上的一个点,也就是需要两个坐标来确定。那么这时,就需要两个随机变量了。

由向量的定义我们也可以知道。向量是有方向和大小的。一个点能有方向和大小吗?答案是否定的。到这里,我相信大家也清楚了随机向量的概念。

🌱 定义

一般地,对某一个随机试验涉及的 n n n个随机变量 X 1 , X 2 , . . . , X n X_{1},X_{2},...,X_{n} X1,X2,...,Xn,记为 ( X 1 , X 2 , . . . , X n ) (X_{1},X_{2},...,X_{n}) (X1,X2,...,Xn),成为 n n n维随机向量或 n n n维随机变量。

💦 二维随机向量及其分布函数

上面我们说到,一个平面上的坐标可以由两个随机变量组合表示。那么可以知道这两个随机变量的取值一定是在这个平面范围内的,也就是说二位随机向量 ( X , Y ) (X,Y) (X,Y)中的两个随机变量 X X X Y Y Y是有联系的,它们是定义在同一样本空间上的两个随机变量

🌱 定义

设随机试验 E E E的样本空间为 Ω \Omega Ω X X X Y Y Y是定义在 Ω \Omega Ω上的随机变量,由它们构成的向量 ( X , Y ) (X,Y) (X,Y),称为二维随机向量。

☁️ 分布函数

🌱 定义

( X , Y ) (X,Y) (X,Y)是二维随机向量,对于任意实数 x , y x,y x,y,称二元函数 F ( x , y ) = P { X ≤ x , Y ≤ y } F(x,y)=P\{X\leq x,Y\leq y\} F(x,y)=P{Xx,Yy}
( X , Y ) (X,Y) (X,Y)的分布函数。

PS:当然了,看到这里之前一定要先清楚了解随机变量的分布函数才行哦!快点击我复习一下

F ( x ) F(x) F(x)表示事件 P { X ≤ x } P\{X\leq x\} P{Xx}发生的概率,那么 F ( x , y ) F(x,y) F(x,y)表示的是什么呢?

先前说到用两个随机变量来表示平面上点的坐标,也就是两个随机变量所表示的事件一定要同时发生才行是吧,你想一下啊,如果随机变量 X X X确定了,也就是 x x x坐标确定了,如果 Y Y Y没确定的话那么这个点就表示不出来。那么就有:

分布函数 F ( x , y ) F(x,y) F(x,y)表示事件 { X ≤ x } \{X\leq x\} {Xx}和事件 { Y ≤ y } \{Y\leq y\} {Yy}同时发生的概率

如果我们就用 ( X , Y ) (X,Y) (X,Y)来表示平面上随机点的坐标,那么分布函数 F ( x , y ) F(x,y) F(x,y) ( x 0 , y 0 ) (x_{0},y_{0}) (x0,y0)处的函数值 F ( x 0 , y 0 ) F(x_{0},y_{0}) F(x0,y0)就是表示事件 P { X ≤ x 0 , Y ≤ y 0 } P\{X\leq x_{0},Y\leq y_{0}\} P{Xx0,Yy0}发生的概率。在 x o y xoy xoy面上表示的就是一块矩形面积,如下图:
在这里插入图片描述
这个面积呢是无限向左下延伸的,大家自己动动脑袋想象一下噢!

如果这个还不能解释清楚随机向量的分布函数,那么别急,再来一个!
在这里插入图片描述
例如:对于 ( X , Y ) (X,Y) (X,Y)落在矩形区域 { ( x , y ) : x 1 < x ≤ x 2 , y 1 < y ≤ y 2 } \{(x,y):x_{1}<x\leq x_{2},y_{1} <y\leq y_{2}\} {(x,y):x1<xx2,y1<yy2}内的概率,先给出它在 x o y xoy xoy面上的面积表示:在这里插入图片描述
那么它的概率可表示为 P { x 1 < X ≤ x 2 , y 1 < y ≤ y 2 } = F ( x 2 , y 2 ) − F ( x 2 , y 1 ) − F ( x 1 , y 2 ) + F ( x 1 , y 1 ) P\{x_{1}<X\leq x_{2},y_{1}< y\leq y_{2}\}=F(x_{2},y_{2})-F(x_{2},y_{1})-F(x_{1},y_{2})+F(x_{1},y_{1}) P{x1<Xx2,y1<yy2}=F(x2,y2)F(x2,y1)F(x1,y2)+F(x1,y1)
后面四个函数就相当于是在进行面积相加减,最后得到上图那个面积。

ok现在大致清楚了随机变量分布函数的概念,现在引入它的三个性质
在这里插入图片描述

☀️ 性质1

F ( x , y ) F(x,y) F(x,y)是变量 x , y x,y x,y的不减函数(递增或者等于),也就是当 y y y固定, x 1 < x 2 x_{1}<x_{2} x1<x2时, F ( x 1 , y ) ≤ F ( x 2 , y ) F(x_{1},y) \leq F(x_{2},y) F(x1,y)F(x2,y);当 x x x固定, y 1 < y 2 y_{1}<y_{2} y1<y2时, F ( x , y 1 ) ≤ F ( x , y 2 ) F(x,y_{1})\leq F(x,y_{2}) F(x,y1)F(x,y2)

☀️ 性质2

0 ≤ F ( x , y ) ≤ 1 , − ∞ < x < + ∞ , − ∞ < y < + ∞ 0\leq F(x,y) \leq 1,-\infty<x<+\infty,-\infty < y<+\infty 0F(x,y)1,<x<+,<y<+

分布函数的值就是概率噢

☀️ 性质3

对于固定的 y y y F ( − ∞ , y ) = lim ⁡ x → − ∞ F ( x , y ) = 0 F(-\infty,y)=\displaystyle\lim_{x\to-\infty}F(x,y)=0 F(,y)=xlimF(x,y)=0
对于固定的 x x x F ( x , − ∞ ) = lim ⁡ y → − ∞ F ( x , y ) = 0 F(x,-\infty)=\displaystyle\lim_{y\to-\infty}F(x,y)=0 F(x,)=ylimF(x,y)=0
还有 F ( − ∞ , − ∞ ) = lim ⁡ x , y → − ∞ F ( x , y ) = 0 F(-\infty,-\infty)=\displaystyle\lim_{x,y\to-\infty }F(x,y)=0 F(,)=x,ylimF(x,y)=0
F ( + ∞ , + ∞ ) = lim ⁡ x , y → + ∞ F ( x , y ) = 1 F(+\infty,+\infty)=\displaystyle\lim_{x,y\to+\infty}F(x,y)=1 F(+,+)=x,y+limF(x,y)=1
这里就需要大家用上面的面积法去想象一下噢。

💦 二维离散型随机向量

如标题,如果一个二维随机向量是离散型的,那么它的每个分量都是离散型随机变量。

🌱 定义

设二维离散型随机向量 ( X , Y ) (X,Y) (X,Y)所有可能取得值为 ( x i , y i ) , i = 1 , 2 , . . . , j = 1 , 2 , . . . (x_{i},y_{i}),i=1,2,...,j=1,2,... (xi,yi),i=1,2,...,j=1,2,...,记
P { X = x i , Y = y i } = p i j           i = 1 , 2 , . . . , j = 1 , 2 , . . . P\{X=x_{i},Y=y_{i}\}=p_{ij}~~~~~~~~~i=1,2,...,j=1,2,... P{X=xi,Y=yi}=pij         i=1,2,...,j=1,2,...
称上式为二维离散型随机向量 ( X , Y ) (X,Y) (X,Y)概率分布分布律

也就是说,平面上一个点表示一个概率,这个点又由一个随机向量(两个随机变量)表示。

好了,知识总结完毕,接下来就是用C语言去实现做题的过程了。这期做题主要针对的就是二维离散型随机向量,因为二维连续型随机向量的指针点比较多,而且很多课后题也是针对于连续型的,所以下期就主要是对二维连续型随机向量进行知识点总结以及C语言实现。

💦 C语言案例实现

  1. 设有10件产品,其中7件正品,3件次品。现从中任取两次,每次取一件产品,取后不放回,求两次抽取的概率分布。

分析:这个题用条件概率也可以做,但这里我们就用随机向量来做。令 X = { 1 ,第一次取到的产品是次品 0 ,第一次取到的产品是正品 X=\begin{cases} 1,第一次取到的产品是次品\\ 0,第一次取到的产品是正品\\ \end{cases} X={1,第一次取到的产品是次品0,第一次取到的产品是正品
Y = { 1 ,第二次取到的产品是次品 2 ,第二次取到的产品是正品 Y=\begin{cases} 1,第二次取到的产品是次品\\ 2,第二次取到的产品是正品\\ \end{cases} Y={1,第二次取到的产品是次品2,第二次取到的产品是正品
首先呢我们要写出 ( X , Y ) (X,Y) (X,Y)所有可能取的值: ( 0 , 0 ) , ( 0 , 1 ) , ( 1 , 1 ) , ( 1 , 0 ) (0,0),(0,1),(1,1),(1,0) (0,0),(0,1),(1,1),(1,0)。后面就用组合公式就可以算出概率了。代码如下👇:

#include <stdio.h>
#define M 90

// the algorithm of combination ——排列组合中组合的算法
int Combination(int n,int m)
{
	int sum = 1,p = 1;
	for( ; m > 0 ; m--)
	{
		sum *= n--;
		p *= m;
	}
	
	return sum/p;
}
// the algorithm of abbreviation ——约分的算法
void Abbreviation(int *a)
{
	while(a[0] % 2 == 0 && a[1] % 2 == 0)
	{
		a[0] /= 2;
		a[1] /= 2;
	}
	
	for(int i = 3 ;i < a[1] / 2 ; i += 2)
	{
		while(a[0] % i == 0 && a[1] % i == 0)
		{
			a[0] /= i;
			a[1] /= i;
		}
	}
}

// use structure to store the value of the Two-dimensioned vectors ——用结构体来存储二维向量的取值
typedef struct
{
	int X;
	int Y;
	// use an array to store the probability of the current vector ——用数组来存储当前向量表示的事件发生的概率
	// the reason why use an array is that we need to adapt to the abbreviation algorithm ——用数组的原因是为了与约分函数对应
	int p[2];
}TDVectors;

int main()
{
	TDVectors V[4];
	printf("Please input the values of X and Y:\n");
	for(int i = 0 ; i < 4 ; i++)
	{
		scanf("%d,%d",&V[i].X,&V[i].Y);
	}
	printf("The end of inputting-------------------\n");
	printf("The possible values of X and Y is :");
	for(int i = 0 ; i < 4 ; i++)
	{
		printf("(%d,%d) ",V[i].X,V[i].Y);
	}
	printf("\n");
	for(int i = 0 ; i < 4 ; i++)
	{
		// the number of quality goods ——正品的数量
		int z = 7;
		// the number of defective goods ——次品的数量
		int c = 3;
		V[i].p[0] = V[i].X == 0 ? Combination(z--,1) : Combination(c--,1);
		V[i].p[0] *= V[i].Y == 0 ? Combination(z,1) : Combination(c,1);
		// M denotes all the situations ——M表示所有的抽取情况
		V[i].p[1] = M;
	}
	// reduction of a fraction ——约分
	for(int i = 0 ; i < 4 ; i++)
		Abbreviation(V[i].p);
	for(int i = 0 ; i < 4 ; i++)
		printf("P{X=%d,Y=%d}=%d/%d\n",V[i].X,V[i].Y,V[i].p[0],V[i].p[1]);
	return 0;
}

在这里插入图片描述
为啥要在结构体数组再定义一个数组类型的成员变量,不麻烦吗?

别问,问就说是为了骚操作!在这里插入图片描述

  1. 为了进行吸烟与肺癌关系的研究,随机调查了23000个40岁以上的人,其结果如下表:
吸烟\肺癌未患
34597
不吸118399

“3”表示既吸烟又患了肺癌的人数。后面的数字就不用解释了吧~~

分析:这个不同与正次品的判断,一眼看去,这啥呀,感觉好复杂~~

但实际上不然,对与这个题我们也可以引进二维随机向量 ( X , Y ) (X,Y) (X,Y)来做,记
X = { 1 , 被调查者不吸烟 0 , 被调查者吸烟 X=\begin{cases} 1,被调查者不吸烟\\ 0,被调查者吸烟\\ \end{cases} X={1,被调查者不吸烟0,被调查者吸烟
Y = { 1 , 被调查者未患肺癌 0 , 被调查者患肺癌 Y=\begin{cases} 1,被调查者未患肺癌\\ 0,被调查者患肺癌\\ \end{cases} Y={1,被调查者未患肺癌0,被调查者患肺癌
然后嘛,这个题的做法就跟上面一样咯。代码也相差无几👇:

#include <stdio.h>
#define M 23000

// the algorithm of combination ——排列组合中组合的算法
int Combination(int n,int m)
{
	int sum = 1,p = 1;
	for( ; m > 0 ; m--)
	{
		sum *= n--;
		p *= m;
	}
	
	return sum/p;
}


typedef struct
{
	int X;
	int Y;
	float p;
}TDVectors;

int main()
{
	TDVectors V[4];
	int pos = 0;
	printf("Each variate has two possbible values,so there are four situations:");
	for(int i = 0 ; i < 2 ; i++)
	{
		for(int j = 0 ; j < 2 ; j++)
		{
			V[pos].X = i;
			V[pos].Y = j;
			pos++;
			printf("(%d,%d) ",i,j);
		}
	}
	printf("\n");
	printf("\n");
	printf("Now you need to input the number of each situation:\n");
	for(int i = 0 ; i < 4 ; i++)
	{
		scanf("%f",&V[i].p);
		printf("The situation(%d,%d) has %.0f people.\n",V[i].X,V[i].Y,V[i].p);
	}
	int All;
	printf("\n");
	printf("Please input the number of people in total:");
	scanf("%d",&All);
	for(int i = 0 ; i < 4 ; i++)
		V[i].p = V[i].p / All;
	printf("\n");
	for(int i = 0 ; i < 4 ; i++)
		printf("P{X=%d,Y=%d}=%.5f\n",V[i].X,V[i].Y,V[i].p);
	return 0;
}

在这里插入图片描述
不过有些地方还是做了一点点改动哈,一切都是为了更骚~
在这里插入图片描述
这期学习到这里就结束了噢。

咱们下期再见!
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值