0

写真のリストが与えられた場合:

set 1 : 14 photos
set 2 : 4 photos
set 3 : 2 photos

[{'set' : 1,'photos' : ['photo1','photo2'....'photo14']}, {'set' : 2,.....]

ユーザーに10枚の画像を表示したい。セット1がリストを支配する可能性が最も高く(たとえば、10枚の画像のうち6枚)、他のセットが小さい数を持っていることで不当に不利にならないようにしたい.

そのような美的に満足できるランダムな選択をもたらすシンプルで堅牢なアルゴリズムは何ですか?

4

1 に答える 1

4
import random
photos = [{'set' : 1,'photos' : ['photo1','photo2'....'photo14']}, {'set' : 2,.....]
weight = {1: 6, 2: 3, 3: 1} # set : number of shown photos
show = []
for d in photos:
    show.extend(random.sample(d['photos'], weight[d['set']]))
random.shuffle(show)
# show now contains a shuffled list of 6 photos from set 1, 3 from set 2 and 1 from set 3
于 2012-09-05T06:44:57.257 に答える