Sélectionnez l'élément de hasard avec des poids

J'ai une liste d'environ. 10000 articles. La situation actuelle est que chaque élément est associé à un poids (de priorité ou d'importance). Maintenant, le plus petit poids est -100 (négatives et les valeurs zéro peut être retiré) et le poids le plus élevé est 1500. Le poids est déterminé par l'intuition par des personnes (comment quelqu'un pense que le point est important pour la communauté). Parce qu'il n'est pas facile de déterminer le point le plus important, je voudrais utiliser certains facteur aléatoire, de sorte que les éléments avec un poids inférieur aura moins de chance d'être sélectionné et de son poids sera ajusté à l'avenir (un mélange de bon sens et de l'aléatoire).

Savez-vous comment coder une fonction 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

Merci

salut, j'ai récemment répondu à une question de ce genre: stackoverflow.com/a/9073313/862629

OriginalL'auteur xralf | 2012-02-13