Add clt.py

This commit is contained in:
2019-07-10 14:27:03 +03:00
parent 9f7725e1ed
commit 7f8d8ed1d3

61
python/clt.py Normal file
View File

@@ -0,0 +1,61 @@
import numpy as np
import matplotlib.pyplot as plt
from numpy.random import random
def get_group_averages(num_groups, group_size):
averages = []
rand_values = random(num_groups * group_size)
curr_num = 0
for i, num in enumerate(rand_values):
curr_num += num
if i % group_size == 0:
averages.append(curr_num / group_size)
curr_num = 0
return averages
def get_bins(values, num_bins, min_val = 0, max_val = 1):
bins = [0 for _ in range(num_bins)]
value_range = abs(min_val - max_val)
bin_size = value_range / num_bins
for value in values:
for curr_bin in range(num_bins):
bin_start = curr_bin * bin_size
bin_end = bin_start + bin_size
if value > bin_start and value < bin_end:
bins[curr_bin] += 1
break
return bins
def main(argv):
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('num_values')
parser.add_argument('group_size')
parser.add_argument('num_bins')
args = parser.parse_args(argv[1:])
num_values = int(args.num_values)
group_size = int(args.group_size)
num_bins = int(args.num_bins)
values = get_group_averages(num_values, group_size)
bins = get_bins(values, num_bins)
plt.plot(bins)
plt.savefig('out.png')
if __name__ == '__main__':
from sys import argv
main(argv)