On Aug 27, 3:42 pm, Ivan Voras <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I have a list of items, and need to choose several elements from it,
> "almost random". The catch is that the elements from the beginning
> should have more chance of being selected than those at the end (how
> much more? I don't care how the "envelope" of probability looks like at
> this point - can be linear). I see that there are several functions in
> Python standard libraries for various distribution, but is there an easy
> pythonic way to make them do what I need?
>
>  signature.asc
> 1KDownload

If your list is small enough, you could do something
like this:

import random
test = ['a','b','c','d','e','f','g','h','i','j']
temp = []
size = len(test)-1
for i,j in enumerate(test):
  temp.extend(j*(2**(size-i)))
for i in xrange(400):
  if i % 30 == 0: print
  print random.choice(temp),

##  a a b a a a i c a a a b c b b a a a a b a a a d a b a a g f
##  a e a a a i a b a a b c b a a b a b b c b a b a c a a a a a
##  b a a c a c e d b d a a a a a c a b b e a a b a a b a a c a
##  a a a a a a b a b a c a a a c a d a c a a d b b b b d a a a
##  a a d b a a a b a b b a b a c a a a b b a c b c a a c c c a
##  a a b a a a b a b a a a a d c a a b c b b b d b b a a b c a
##  a a a a a a b a d b c d b a b c a d b b b a b a b b b b b a
##  b c a b a a b c a a a a a a a a b a a a b a a a a a d a b b
##  a b b a c a b c a a a a a a a a c b a c c a a e a a a c b b
##  a c e b b a a b c a b a b a a b a g a b e a a a c c a a c b
##  b i a b a a a a c c c b a a a a a b b b a b b a a b b h a a
##  d b a b a b b a a b c a b a a b a a a c a d a a b a b a a a
##  a d a b b a b a a c a b c d b a a d a a b b a a a a a d a c
##  a a a b a a b a c b

Here, 'a' is twice as likely to occur as 'b',
which is twice as likely to occur as 'c',
which is twice as likely to occur as 'd',
etc.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to