diff --git a/python/clt.py b/python/clt.py new file mode 100644 index 0000000..94bfd54 --- /dev/null +++ b/python/clt.py @@ -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)