标准化值,几乎达到最小值

2024-05-04 12:57:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我把许多可能性乘成一

另外,概率永远不会是零(它将是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

我害怕在其他机器上运行我的代码

我如何规范我的价值观

非常感谢


1条回答
网友
1楼 · 发布于 2024-05-04 12:57:20

听起来您只是想将这两个数字剪裁到(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

相关问题 更多 >