#!/usr/bin/env python

import nest
import random

n = 1000000
print 'computing the 100 lowest values in a list of %d unique values in random order' % n
keep = nest.nlowest(100)
lst = range(n)
len_lst = len(lst)
for i in xrange(len_lst):
    j = int(random.random() * len_lst)
    lst[i], lst[j] = lst[j], lst[i]
for value in lst:
    keep.add(value)
print list(keep)

print 'computing the 100 highest values in a list of %d unique values in random order' % n
keep = nest.nhighest(100)
lst = range(1000000)
len_lst = len(lst)
for i in xrange(len_lst):
    j = int(random.random() * len_lst)
    lst[i], lst[j] = lst[j], lst[i]
for value in lst:
    keep.add(value)
print list(keep)

########

def randoms(n):
    for i in xrange(n):
        yield int(random.random() * n)

n = 1000000
print 'computing the 100 lowest values in a list of %d likely duplicated values in random order' % n
keep = nest.nlowest(100, dups=True)
lst = randoms(n)
for value in lst:
    keep.add(value)
print list(keep)

print 'computing the 100 highest values in a list of %d likely duplicated values in random order' % n
keep = nest.nhighest(100, dups=True)
lst = randoms(1000000)
for value in lst:
    keep.add(value)
print list(keep)

