如何解决归一化值,几乎达到最小值
我将许多概率乘以一。
附言概率不会永远为零(它会是 0.01),也不会永远不会是一百(它会是 0.99)。
for probabilities in get_random_list_of_probabilities():
a = 1
b = 1
for probability in probabilities:
a *= probability
b *= (1 - probability)
if a < b:
a_is_greater += 1
if b > a:
b_is_greater += 1
经过一些迭代后,a
可以约为 5.087e-258
。
根据 sys.float_info
,我的 Python 可以处理的最小值约为 2.225e-308
。
我害怕在其他机器上运行我的代码。
如何规范我的值?
非常感谢!
解决方法
听起来您只想将两个数字剪辑到 (0.01,0.99) 之内(这显然可以在任何地方表示):
def normalize(p: float) -> float:
"""Normalize a probability to within 0.01 and 0.99."""
return max(0.01,min(0.99,p))
for probabilities in get_random_list_of_probabilities():
a = 1
b = 1
for probability in probabilities:
a = normalize(a * probability)
b = normalize(b * (1 - probability))
if a < b:
a_is_greater += 1
if b > a:
b_is_greater += 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。