A quick test to show that Benford's Law does not work for data that is random numbers. It does however work very well for data which is generated following a power law. https://en.wikipedia.org/wiki/Benford%27s_law
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Steven Polley 9b3f3e593f markdown autoformats as URL when detected. 10 months ago
.gitignore Clean up project 10 months ago
README.md markdown autoformats as URL when detected. 10 months ago
main.go Clean up project 10 months ago

README.md

benfords-law

This was a test to determine if random numbers follow Benford's Law. I suspect it has more to do with the distribution real life data collected from than truly random numbers. If this is true, maybe this is why it works for fraud detection.

Results

With One-Hundred-Million samples of random numbers between 0 and 9,999,999,999,999,999, the number of leading digits was the following:

$ ./benfords-law.exe
2020/11/14 10:24:18 generating numbers...
2020/11/14 10:24:19 18% completed generating and analyzing samples
2020/11/14 10:24:20 37% completed generating and analyzing samples
2020/11/14 10:24:21 56% completed generating and analyzing samples
2020/11/14 10:24:22 75% completed generating and analyzing samples
2020/11/14 10:24:23 93% completed generating and analyzing samples
2020/11/14 10:24:24 done.
1: 1108503 (11.085030%)
2: 1111584 (11.115840%)
3: 1111726 (11.117260%)
4: 1111122 (11.111220%)
5: 1110443 (11.104430%)
6: 1111248 (11.112480%)
7: 1111496 (11.114960%)
8: 1111777 (11.117770%)
9: 1112101 (11.121010%)
Press 'Enter' to continue...

This shows that Benford's law only works when the data is not random, such as natural data gathered in real life. This is because for data which Benford's law does work, it's natural data generated following a power law, which is quite common in nature.

Run this program yourself

If you wish to run this program yourself, you can download it from the releases page for Windows or Linux. You can also build it yourself, instructions below:

Build Prerequisites

You can have pretty much any mainstream Operating System or CPU architecture out there, but you need some buildtime dependancies on your system to move forward. You may already have these, you'll know if you do.

  1. Install Go https://golang.org/, if you don't know what this is, yes that is a picture of a gopher on the home page but this is no joke.
  2. Install Git https://git-scm.com/downloads, this is version control software which is used to download this code to be available on your system sp you can run it yourself if you like.

Build Instructions

From a command prompt / shell or whatever you got, clone this repository using git.

git clone https://deadbeef.codes/steven/benfords-law.git

Change directory into the downloaded local copy, then build the program using Go.

cd benfords-law
go build .

You will be left with an executable file named benfords-law in the same directory.