Как сделать процентную вероятность выведения той или иной картинки из 2 массивов?

Есть 2 массива

const truePhotos = ['1 фото', '2 фото', '3 фото','4 фото',...'100 фото',]
const funnyPhotos = ['1 фото', '2 фото']

Делаю рандомное выведение картинки из первого массива

function getPhoto() {
    return truePhotos[Math.floor(Math.random() * truePhotos.length)]
}

Теперь хочу реализовать в этой функции 10% шанс выведения кляксы - смешного фото)) То есть когда человек обращается к функции getPhoto() он с 10% вероятностью получал фото из массива funnyPhotos.

И желательно хотел бы сделать на будущее если будет, например 4 массива, у одного шанс 10% у другого 40% и т.д.

Совершенно не могу подступиться к решению этой идеи


Ответы (1 шт):

Автор решения: vlad9i2

Можно генерировать случайное число rand_num от нуля до 9, потом возвращать в соотвествии с вероятностями:

let rand_num = Math.floor(Math.random() * 10);
if(rand_num == 0)
    return firstarray[Math.floor(Math.random() * firstarray.length)]
if(rand_num == 1 || rand_num == 2 || rand_num == 3 || rand_num == 4)
    return secondarray[Math.floor(Math.random() * secondarray.length)];
return truePhotos[Math.floor(Math.random() * truePhotos.length)]
→ Ссылка