import math def calc(sample): minimum =min(sample) maximum=max(sample) print(minimum,maximum) ran = maximum-minimum n= len(sample) mean = sum(sample)/n sum1 = 0 for i in range(n): sum1 = (sample[i]-mean)**2 std_dev = math.sqrt(1/n*sum1) ratio = ran/std_dev if std_dev != 0 else 0 return {'min': minimum, 'max': maximum, 'range': ran, 'deviation': std_dev,'range to stddev': ratio, 'samplesize': n} def intervals(sample,m): stats =calc(sample) minimum = stats['min'] maximum =stats['max'] sortedsam = sorted(sample) n=len(sortedsam) width =(maximum-minimum)/m bounds = [minimum + i*width for i in range(m+1)] c = [0]*m s = 0 for i in range(m): lower = bounds[i] upper = bounds[i+1] while s < n and sortedsam[s] <= upper: if i ==m-1: if sortedsam[s] >= lower: c[i]+=1 else: if lower <=sortedsam[s] < upper: c[i]+=1 s +=1 return bounds, c