Выбрать случайный предмет с весом

У меня есть список из примерно 10000 элементов. Текущая ситуация такова, что каждый элемент имеет связанный вес (приоритет или важность). Теперь наименьшее вес составляет -100 (отрицательные и нулевые значения можно удалить), а максимальный вес составляет 1500 . Вес определяется интуицией людей (как кто-то думает, что элемент важен для сообщества) . Поскольку определить самый важный элемент непросто, я хотел бы использовать некоторый случайный фактор, чтобы у предметов с меньшим весом было меньше шансов быть выбранными, а их вес был скорректирован в будущем (некоторая смесь здравого смысла и случайность).

Вы знаете, как закодировать функцию getItem ?

def getItem(dict):
  # this function should return random item from 
  # the dictionary of item-weight pairs (or list of tuples)
  # Normally I would return only random item from the dictionary,
  # but now I'd like to have this: The item with weight 1500 should
  # have much more chance to be returned than the item with weight 10.
  # What's my idea is to sum up the weights of all items and then compute
  # some ratios. But maybe you have better idea.
  return randomItem

Спасибо

8
задан xralf 13 February 2012 в 13:54
поделиться