import math,random,sys

def euclideandistance(a,b):
   sum = 0
   for i in range(len(a)):
      diff = a[i]-b[i]
      sum += diff*diff
   return math.sqrt(sum)

def curseofdim(numdim):
   numpoint = 10
   # generate a list of numpoint vectors in numdim dimensions
   # coordinates are drawn randomly from [0,1]
   myvectors = []
   for i in range(numpoint):
      myvectors.append([])
      for j in range(numdim):
         myvectors[i].append(random.random())
   distlist = []
   for i in range(numpoint):
      for j in range(i+1,numpoint):
         distlist.append(euclideandistance(myvectors[i],myvectors[j]))
   distlist.sort()
   print
   print 'smallest distance of any two points',distlist[0]
   print 'largest distance of any two points',distlist[-1]
   print 'difference smallest/largest distance',(distlist[-1]-distlist[0])
   print 'relative difference between "close" and "distant" points',(distlist[-1]-distlist[0])/distlist[0]
   print
   
curseofdim(int(sys.argv[1]))
