# 6.2 随机变量

本节，我们对概率论中重要的随机变量进行讲解。SymPy中关于随机变量的API都十分简单，在此我们仅仅给出API的一般形式，不再对它们的使用进行详细讲解。读者根据相关实例，就可以掌握这些API的用法。

## 6.2.1 离散型随机变量

### 0-1分布

sympy.stats.Bernoulli(name, p, succ=1, fail=0)

创建一个表示伯努利过程的有限随机变量。如果随机变量X满足伯努利分布，则X的分布律为：

| $$X$$ | $$0$$   | $$1$$ |
| ----- | ------- | ----- |
| $$P$$ | $$1-p$$ | $$p$$ |

导入函数代码如下：

```python
[]:from sympy.stats import Bernoulli
```

例：随机变量$$X$$服从 $$\left(\begin{array}{cc} 0&1\ \frac{1}{4}&\frac{3}{4} \end{array}\right)$$伯努利分布，计算期望$$E(X)$$

```python
[]:X = Bernoulli('X', S(3)/4) \# 1-0 Bernoulli variable, probability = 3/4

density(X).dict
```

\[]: ![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-6f4428fda1647d24f28e13568872ece22ff1f15f%2F62cb22c52b76fc4349ef51ff8b835a4c.png?alt=media)

```python
[]:E(x)
```

![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-ccb33b86f4340202f2b55a74fccba6556b23acc6%2F9030d53913e11b43f510c4c4bf74c5b2.png?alt=media)\[]:

### 二项分布

sympy.stats.Binomial(*name*, *n*, *p*, *succ=1*, *fail=0*)

创建一个表示二项分布的有限随机变量。如果随机变量X满足伯努利分布，则X的分布律为： $$P{X=k}=p q^{k-1} ,k=1,2, ...$$

导入函数代码如下：

```python
[]:from sympy.stats import Binomial
```

例：创建任意一个样本空间维度为5的随机变量，计算其期望与方差

```python
[]:X = Binomial('X', 4, S.Half) \# Four "coin flips"

density(X).dict
```

\[]:![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-4173da527eb1bd58eaadcb86df4b682c5e7fe396%2Fe675c4eaad6b5f2060311e8ef5165c4f.png?alt=media)

\[]:![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-770c2f63cf6b9fa50e4fda43295a266ef5341f30%2F066732ee90fe1921432c20a8c6753441.png?alt=media)

### 超几何分布

sympy.stats.Hypergeometric(*name*, *N*, *m*, *n*)

创建一个表示超几何分布的有限随机变量。如果随机变量X满足超几何分布，则X的分布律为： $$P{X=k}=p q^{k-1} ,k=1,2, ...$$

导入函数代码如下：

```python
[]:from sympy.stats import Hypergeometric
```

例：有十个小球，其中红色小球数量为5，蓝色小球数量为3，白色小球数量为2。现从这些小球中任取3个。设随机变量X为被取中的红色小球个数，求的概率密度，概率分布函数，期望，方差，标准差。

```python
[]:X = Hypergeometric('X', 10, 5, 3) \# 10 marbles, 5 white (success), 3 draws

density(X).dict, cdf(X), E(x), variance(X), std(X)
```

\[]:![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-c1b8801bc96a08079cf6f22a6513a5965c7a711f%2F7b4b85eb5d270b5d7a7740b1d07076cb.png?alt=media)

### 泊松分布

```python
sympy.stats.Poisson(name, lamda)
```

创建一个具有泊松分布的离散随机变量。泊松分布的概率密度为: $$P{x=k}=\frac{\lambda ^k}{k!} e^{- \lambda },k-=0,1,2, ...$$ 导入函数代码如下：

```python
[]:from sympy.stats import Posson
```

例：随机变量服从参数为的泊松分布，求其期望与方差

```python
[]:rate = Symbol("lambda", positive=True)

z = Symbol("z")

X = Poisson("x", rate)

density(X)(z)
```

\[]:![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-874fe99ef17eddd50b29c47892be8195cdcad061%2F80b11d795fccfd0d8e9fa4f689947337.png?alt=media)

```python
[]:E(X), variance(X)
```

\[]:![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-fa1f1f389d2cfcd0e01e95bd285759ae010fbc32%2F5acd82d14ecdba4814d2e721fabaad9c.png?alt=media)

## 6.2.2 连续型随机变量

### 均匀分布

sympy.stats.Uniform(*name*, *left*, *right*)

创建一个均匀分布的连续随机变量。均匀分布的概率密度为：

$$
\frac{1}{b-a} & a\le x \le b \ 0, & Others \end{cases}
$$

导入函数代码如下：

```python
[]from sympy.stats import Uniform
```

例：随机变量$$X$$在区间$$\[a, b]$$上服从均匀分布，求其累积分布函数

```python
[]:a = Symbol("a", negative=True)

b = Symbol("b", positive=True)

z = Symbol("z")

X = Uniform("x", a, b)

density(X)(z)
```

\[]:![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-fc1f87c8971f6addc0601745eec0b411b7fa3b15%2F96ccdb2b6b83f5d946481bc0f61da194.png?alt=media)

```python
[]:cdf(X)(z)
```

![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-bdd71a11b2f5c49b7891a54c1d85337551491aad%2Fd5a4bab52fa5e7fc259ae4dda83ba660.png?alt=media)

```python
[]:simplify(E(X)),simplify(variance(X))
```

\[]:![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-dc379d6abba438bf5fbcc3d8360ad7b3441c5156%2Fc6a0c1637dca05930cbf231d0192a128.png?alt=media)

### 指数分布

sympy.stats.Exponential(*name*, *rate*)

创建一个指数分布的连续随机变量。指数分布的概率密度为

$$
\frac{1}{\lambda} e^{-\frac{x}{\lambda}} & x\gt \ 0, & x\le 0 \end{cases}, \lambda \gt 0
$$

例：随机变量服从参数为指数分布，求其概率密度，累积分布函数，期望，方差，偏态系数

```python
[]:l = Symbol("lambda", positive=True)

z = Symbol("z")

X = Exponential("x", l)

density(X)(z),cdf(X)(z),E(X),variance(X),skewness(X)
```

\[]: ![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-dc38c00e2b7902f6ac2e284ee4b927e640461eea%2F4f289a5600641189e4ec91aa32e17539.png?alt=media)

### 正态分布

```python
sympy.stats.Normal(*name*, *mean*, *std*)
```

创建一个具有正态分布的连续随机变量。正态分布的概率密度为：

导入函数代码如下：

```python
[]:from sympy.stats import Normal
```

例：随机变量服从参数的正态分布，求其概率密度，累积分布函数，偏态系数

```python
mu = Symbol("mu")

sigma = Symbol("sigma", positive=True)

z = Symbol("z")

y = Symbol("y")

X = Normal("x", mu, sigma)

density(X)(z),simplify(cdf(X))(z),simplify(skewness(X))
```

\[]: ![](https://3607972777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-9CYfSlrNPw45CMh%2Fuploads%2Fgit-blob-a51016b79b9751001cf5eeadd3a72ef2d19dc831%2F2e1094095d4611062d11db6f400dc422.png?alt=media)
