首页 > 解决方案 > 本福德分布

问题描述

您好,我正在尝试为 Benford 分发编写代码,但出现此错误:

def leading_digit(n):
    while n >= 10:
        n = n//10
    return n

def Ben(k):
    results = []
    for i in range(k):
        random_number[i] = np.random.randint(10000)
        results.append(leading_digit(random_number[i]))
    return results

Ben(2)

错误信息:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-27-5811e9105b42> in <module>
----> 1 Ben(2)

<ipython-input-26-5df31a0e6a56> in Ben(k)
      2     results = []
      3     for i in range(k):
----> 4         random_number[i] = np.random.randint(10000)
      5         results.append(leading_digit(random_number[i]))
      6     return results

NameError: name 'random_number' is not defined

标签: python

解决方案


您应该使用一些值初始化random_number列表 ( ),因为它会报告变量未定义错误。random_number = [0] * krandom_number

def leading_digit(n):
    while n >= 10:
        n = n//10
    return n

def Ben(k):
    results = []
    random_number = [0] * k
    for i in range(k):
        random_number[i] = np.random.randint(10000)
        results.append(leading_digit(random_number[i]))
    return results

Ben(2)

推荐阅读