62 lines
1.4 KiB
Python
62 lines
1.4 KiB
Python
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)
|