0

我正在学习 python 和 numpy 等。我正在编写一个硬币翻转的代码,但是我对代码有些困惑。我回顾了课程,但看不到它在哪里解释了以下代码中 total_sums 等于 2 的原因。

tests = np.random.choice([0, 1], size=(int(1e6), 3), p=[0.6, 0.4])
test_sums = tests.sum(axis=1)
(test_sums == 2).mean()

除了 test_sums == 2 之外,我能够正确地获取上面的代码,我被卡了很长时间。

代码的目的是看当你掷硬币 3 次时,它会落在正面一次的概率是多少。在这种情况下,正面为 0,反面为 1。有人能告诉我我错过了什么吗?谢谢

4

1 回答 1

0

在每次试验中你有 3 次翻转。你正在检查你得到一个头的频率。1 头意味着,事实上,2 尾。测试 2 个尾巴与测试 1 个头完全相同。

test_sums == 2根据三个翻转的总和True是否为 此表达式返回一系列布尔值,标记每个所需的试验 - 1 head 1`。False2with a

例如,让我们考虑一组只有 5 次试验(您的代码执行 100 万次),每次 3 次翻转,结果:

tests = [ [0 1 0] [1 1 0] [0 0 0] [0 0 1] [0 0 0] ]

我们现在将得到

test_sums = [ 1 2 0 1 0 ]

(test_sums == 2)是一个临时变量,如下所示:

[ False True False True False ]

编码为

[ 0 1 0 1 0 ]

...并且这个系列的平均值是0.4,它将显示为所需的概率。

该系列的算术平均值是该系列中 a 的概率1- 也就是说,在该试验系列中,在 3 次翻转中恰好得到 1 个正面的概率。

这样就清楚了吗?

于 2019-08-23T15:50:37.883 回答