簡體   English   中英

概率質量函數求和 2 個骰子?

[英]Probability mass function sum 2 dice roll?

嘗試為 2 個骰子總和繪制 pmf,但會出現一些右尾問題。

我曾嘗試使用 numpy 和其他 python 庫,但問題仍然存在:

import tensorflow as tf
tf.enable_eager_execution()
import tensorflow_probability as tfp
from matplotlib import pyplot as plt
import numpy as np

a=500000
dado1_=evaluate(tf.cast(tfp.distributions.Uniform(low=1,high=7).sample(a),tf.int32))
dado2_=evaluate(tf.cast(tfp.distributions.Uniform(low=1,high=7).sample(a),tf.int32))

plt.hist(np.add(dado1_,dado2_))
expecting symetric distribution centered at 7 with gaussian form,
assymetric found

輸出圖

Tensorflow_probabilty.Uniform 是一個連續的分布,而不是離散的。 因此,它不會真正適當地模擬擲骰子。

查看圖表,似乎 2 和 3 的刻度線之間的區域是總和為 2 的卷數。3-4 是 3,依此類推。

刻度線 11 和 12 之間是否可能包含總和為 1112 的卷數? 它可以解釋為什么圖形在右側看起來比它應該的短,以及為什么最后一個條比預期的要高。

對於擲骰子,您需要tfd.Categorical

import tensorflow.compat.v2 as tf
tf.enable_v2_behavior()
import tensorflow_probability as tfp
tfd = tfp.distributions
tfb = tfp.bijectors

# 10 independent 1-die samples
print(tfb.AffineScalar(shift=1.)(tfd.Categorical(logits=tf.zeros([6]), dtype=tf.float32)).sample(10))

# 10 independent pairs-of-dice samples
d = tfb.AffineScalar(shift=1.)(tfd.Categorical(logits=tf.zeros([6]), dtype=tf.float32))
print(tfd.Sample(d, 2).sample(10))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM