def w_choice ( lst , nb = 2 ) : """ weighted choice give it a list as this: [[45, 'item1'], [12, 'item2'],[88, 'item3']] nb= Number of items to return """ items = [ ] w_items = [ ] # on récupère tous les serveurs de la liste et leur "poids" (place restante en % par ex) for weight , item in lst: # on créé une liste dans laquelle on multiplie le nom du serveur par son poids, ex si server1 a 4 de poids on aura 4 éléménts server1 for x in xrange ( 100 -weight ) : items. append ( item ) # on secoue mais on frappe pas random . shuffle ( items ) # on récupère x serveurs sur lesquel on uploadera le contenu for item in items: if item not in w_items: w_items. append ( item ) if len ( w_items ) == nb: break return w_items