[英]Sum roll of 10 dice in function not working? ony returning first roll
[英]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 之间是否可能包含总和为 11和12 的卷数? 它可以解释为什么图形在右侧看起来比它应该的短,以及为什么最后一个条比预期的要高。
对于掷骰子,您需要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.