如何在没有numpy的情况下生成随机正态分布?(谷歌采访)

Kel*_*sey 5 python statistics

所以我在谷歌有一个数据科学面试,我正在努力准备。我在 Glassdoor 上看到很多以前在那里面试过的人提出的问题之一是:“编写代码来生成随机正态分布。” 虽然使用 numpy 很容易做到这一点,但我知道有时 Google 会要求候选人在不使用任何包或库的情况下进行编码,所以基本上是从头开始。

有任何想法吗?

imp*_*dom 6

根据中心极限定理,独立随机变量的归一化总和将接近正态分布。最简单的演示是将两个骰子加在一起。

所以也许是这样的:

import random
import matplotlib.pyplot as plt

def pseudo_norm():
    """Generate a value between 1-100 in a normal distribution"""
    count = 10
    values =  sum([random.randint(1, 100) for x in range(count)])
    return round(values/count)
    
dist = [pseudo_norm() for x in range(10_000)]
n_bins = 100
fig, ax = plt.subplots()
ax.set_title('Pseudo-normal')
hist = ax.hist(dist, bins=n_bins)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这会生成类似以下内容的内容: 伪正态生成样本