标签: benfords-law

是否有符合本福特定律的随机数分布?

Python有许多方法可以生成不同的随机数分布,请参阅模块文档random.不幸的是,没有适当的数学背景,它们并不是非常容易理解,特别是考虑到所需的参数.

我想知道这些方法中是否有任何一种能够产生符合Benford定律的分布的随机数,以及哪些参数值是合适的.即对于整数群体,那些整数应该在大约30%的时间以'1'开头,'2'在大约18%的时间开始,等等.


使用Jan Dvorak的答案我将以下代码放在一起,它似乎完美无缺.

def benfords_range_gen(stop, n):
    """ A generator that returns n random integers
    between 1 and stop-1 and whose distribution
    meets Benford's Law i.e. is logarithmic.
    """
    multiplier = math.log(stop)
    for i in range(n):
        yield int(math.exp(multiplier * random.random()))

>>> from collections import Counter
>>> Counter(str(i)[0] for i in benfords_range_gen(10000, 1000000))
Counter({'1': 300696, '2': 176142, '3': 124577, '4': 96756, '5': 79260, '6': 67413, '7': 58052, '8': 51308, '9': 45796})
Run Code Online (Sandbox Code Playgroud)

python random benfords-law

9
推荐指数
1
解决办法
2264
查看次数

Java中的Benford定律 - 如何将数学函数转换为Java

我有一个快速的问题.我试图在java中制作欺诈检测应用程序,该应用程序将主要基于本福德定律.本福德的定律非常酷,它基本上可以解释为在真实的金融交易中,第一个数字通常是1,2或3,很少是8,9.我无法得到本福德公式翻译成可以用Java运行的代码.

http://www.mathpages.com/home/kmath302/kmath302.htm此链接提供了有关本福特法律及其使用方式的更多信息.

我知道我必须使用java数学类才能使用自然日志功能,但我不知道该怎么做.任何帮助将不胜感激.

非常感谢!!

java math syntax function benfords-law

5
推荐指数
1
解决办法
2097
查看次数

标签 统计

benfords-law ×2

function ×1

java ×1

math ×1

python ×1

random ×1

syntax ×1