# collections Counter-rel 1xubb
def ecdf(s,d=0.3):
  s.sort()
  n=len(s)
  # unique + frequencies
  delta=(s[-1]-s[0])*0.5*d
  #print(delta)
  rs=[]
  frs=[]
  pv,f=s[0]-delta,0
  for v in s:
    if v>pv:
      rs.append(pv)
      frs.append(f)
      pv=v
      f=1
    else:
      f+=1
  rs.append(pv)
  frs.append(f)

  
  x=[]
  y=[]
  pz=0
  pv=rs[0]
  for v,fv in zip(rs[1:],frs[1:]):
    z=pz+fv/n
    x.append([pv,v])
    y.append([pz,pz])
    pz=z
    pv=v
  x.append([pv,pv+delta])
  y.append([1,1])

  return x,y

import matplotlib.pyplot as plt
import scipy.stats
from numpy import linspace

normrnd=scipy.stats.norm.rvs
normcdf=scipy.stats.norm.cdf

s=normrnd(0,1,100)
x,y=ecdf(s)
for xx,yy in zip(x,y):
  plt.plot(xx,yy,c='black')
xx=linspace(x[0][0],x[-1][1])
plt.plot(xx,normcdf(xx))
# print(x)
plt.show()

