wallpaper: give a chance to rare images to be selected

Duplicates are allowed.
This commit is contained in:
Vincent Bernat 2024-12-02 08:28:12 +01:00
parent bf7ed44e0b
commit 688c667b22

View file

@ -22,6 +22,8 @@ import random
import argparse
import tempfile
import itertools
import functools
import operator
import logging
import logging.handlers
import inspect
@ -223,7 +225,11 @@ def get_random_images(directory: str, number: int) -> list[Image]:
weights = [100 / ((count - min(counts) + 1) ** 3) for count in counts]
images = [
PIL.Image.open(image)
for image in random.choices(image_files, k=number, weights=weights)
for image in functools.reduce(
operator.add,
(random.choices(image_files, weights=weights) for k in range(number)),
[],
)
]
for image in images: