Posted by Chris MacLeod on Wed 17 Dec 23:44
report abuse | download | new post
- import random
- def ShuffleBag(items, seed=None):
- """Create a new shuffled bag using the elements in items.
- Items can be a dict of (item : frequency) pairs, or an iterable.
- """
- try:
- items = sum(([item] * freq for (item, freq) in items.items()), [])
- except AttributeError:
- items = list(items)
- random.seed(seed)
- while True:
- n = len(items)
- for i in range(n):
- grab = random.randint(i, n-1)
- items[i], items[grab] = items[grab], items[i]
- yield items[i]
- sb = ShuffleBag([1, 2, 2, 2])
- print sb.next() # 1 - 25%, 2 - 75%
- sb = ShuffleBag({1:1, 2:3})
- print sb.next() #1 - 25%, 2 - 75%
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.