import time
import hashlib
import random
print()
print("This program trusts you will enter integers: ")
############## data #################
l1 = ["0","1","2","3","4","5","6","7","8","9"]
l2 = ["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59"]
############# declarations ##############
l = []
n = 0 
x = 0
x_2 = 0
x_sum = 0
sqr_sum = 0
dataset = []
odds = 0
evens = 0
stats = []
############ I/O files ################
filename = input("Enter name for .txt file: ")
filename = filename + ".txt"
outfile = open(filename, "w")
################# Random number function #####################3
def randnum(range):

################# First option ####################
	result = random.randint(0,range)

################# Second option ###################
#	p = "Random numbers are hard! Especially odds, but also a fair mix."
#	q = str(range)
#	m = hashlib.sha256()
#	c = 0
#		m.update(p)
#		m.update(q)
#	c_letters = m.hexdigest()
#	c = 0
#	result = 0
#	while(c < len(c_letters)):
#		if(c_letters[c] == "0"):
#			result = result + c*16*0
#		if(c_letters[c] == "1"):
#			result = result + c*16*1
#		if(c_letters[c] == "2"):
#			result = result + c*16*2
#		if(c_letters[c] == "3"):
#			result = result + c*16*3
#		if(c_letters[c] == "4"):
#			result = result + c*16*4
#		if(c_letters[c] == "5"):
#			result = result + c*16*5
#		if(c_letters[c] == "6"):
#			result = result + c*16*6
#		if(c_letters[c] == "7"):
#			result = result + c*16*7
#		if(c_letters[c] == "8"):
#			result = result + c*16*8
#		if(c_letters[c] == "9"):
#			result = result + c*16*9
#		if(c_letters[c] == "a"):
#			result = result + c*16*10
#		if(c_letters[c] == "b"):
#			result = result + c*16*11
#		if(c_letters[c] == "c"):
#			result = result + c*16*12
#		if(c_letters[c] == "d"):
#			result = result + c*16*13
#		if(c_letters[c] == "e"):
#			result = result + c*16*14
#		if(c_letters[c] == "f"):
#			result = result + c*16*15
#		result = result % range

	return result


################# "main" #################### 
choice = input("List 1 (0-9,) or List 2 (0-59)? ")
while(choice != "1" and choice != "2"):
	choice = input("Has to be <1> or <2>: ")
if(choice == "1"):
	l = l1
else:
	l = l2
print()
i = 0
while(i < len(l)):
    stats.append(0)
    i = i + 1

#print("Random numbers will be suggested by function.")
#print("True random, if entered, should be either: ")
#print("		five ten sided dice, rolled together and lined up for order")
#print()
#print("				OR")
#print()
#print("		five ten sided dice, supplemented by five 6-sided dice ")
#print("		lined up for order and DECREMENTED by 1, to give 0-5.")
#print("		This arguably yields BASE 6, but is fair for 0 - 59.")
#print() 

number = input("How large an N, for the dataset: ")
print()
limit = int(number)
while(n < limit):
    rnum = randnum(len(l)-1)
    print("Random number = " + str(rnum))
    outfile.write("Random number = " + str(rnum) + "\n")
    fx = input("Enter next random number: ")
    while(fx not in l):
	    fx = input("Invalid entry: ")
    outfile.write("Value entered: " + fx + "\n")
    x = int(fx)
    print()
    outfile.write("\n")
    dataset.append(x)
    n = n + 1
    x_2 = x**2
    x_sum = x_sum + x
    sqr_sum = sqr_sum + x_2


########################### Reporting ############################

print("N = " + str(n))
outfile.write("N = " + str(n) + "\n")
print("Sum of Xs = " + str(x_sum))
outfile.write("Sum of Xs = " + str(x_sum) + "\n")
print("Sum of Squares = " + str(sqr_sum))
outfile.write("Sum of Squares = " + str(sqr_sum) + "\n")
print("Mean = " + str(x_sum / n))
outfile.write("Mean = " + str(x_sum / n) + "\n")
print()
outfile.write("\n")
print("data set = ")
outfile.write("data set = " + "\n")
print(dataset)
x = 0
outfile.write("[")
while(x < len(dataset)-1):
	outfile.write(str(dataset[x]) + ", ")
	x = x + 1 
outfile.write(str(dataset[-1]) + "]")

outfile.write("\n")
outfile.write("\n" + "Number of each entry: " + "\n")
print("Number of each entry: ")
print()
sc = 0
while(sc < len(dataset)):
    stats[dataset[sc]] = stats[dataset[sc]] + 1
    sc = sc + 1
sc = 0
while(sc < len(stats)):
	print(str(sc) + "'s - " + str(stats[sc]))
	outfile.write(str(sc) + "'s - " + str(stats[sc]) + "\n")
	sc = sc + 1
sc = 0
odds = 0
evens = 0

while(sc < len(dataset)):
	if(dataset[sc] % 2 == 0):
		evens = evens + 1
	else:
		odds = odds + 1
	sc = sc + 1

print()
outfile.write("\n")
print(str(odds) + " odd numbers.")
outfile.write(str(odds) + " odd numbers.\n")
print(str(evens) + " even numbers.")
outfile.write(str(evens) + " even numbers.\n")

outfile.close()

