> For the complete documentation index, see [llms.txt](https://johannesliu.gitbook.io/learning-advanced-mathematics-with-python/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://johannesliu.gitbook.io/learning-advanced-mathematics-with-python/6.0-probability_and_statistics/6.2-random_variable.md).

# 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
```

\[]: ![](/files/wRKsulziAWIl6eZHzXtU)

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

![](/files/g5XhobGUquQC2o7l6wrb)\[]:

### 二项分布

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
```

\[]:![](/files/q1bGByqFLYdD28y7549D)

\[]:![](/files/SLzg9dsxQQkgLiaTNv2D)

### 超几何分布

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)
```

\[]:![](/files/4CFstAVwDIouM588rZnn)

### 泊松分布

```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)
```

\[]:![](/files/YPFPiOI3gPvAUYcZaiQP)

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

\[]:![](/files/08KJfyrpgZ7kUKhyI27P)

## 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)
```

\[]:![](/files/Nir0aBZ5HKOf27gNbEbf)

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

![](/files/rEEALHNhvpAX2ZOjwrnN)

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

\[]:![](/files/1MjoU4yXnQxOiAPn2pUn)

### 指数分布

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)
```

\[]: ![](/files/EcYVUaECs31ZSUM3xQaY)

### 正态分布

```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))
```

\[]: ![](/files/O63HpT8H5pGtcbIoR4dO)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://johannesliu.gitbook.io/learning-advanced-mathematics-with-python/6.0-probability_and_statistics/6.2-random_variable.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
