繁体   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