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)