Шанс рандома предмета [дубликат]

337
23 января 2017, 21:52

Данный вопрос уже был задан и имеет решение:

  • Шанс рандома предмета PHP [закрыт]

Не могу реализовать шанс рандома. Например:

Конфета = 50% что выпадет при рандоме.

Шоколадка = 20% что выпадет при рандоме.

Как реализовать чтобы шанс учитывался при рандоме? Еще пример:

Сосиска = 100% что выпадет при рандоме - это значит при рандоме 100% мне выпадет сосиска. Как реализовать?

Answer 1

Можете попробовать такой вариант (есть возможность делать рандом на несколько предметов сразу):

function loot($items) {
    $sum = 0;
    $total_weight = 100;
    $chance = rand(1, $total_weight);
    foreach($items as $item => $weight) {
        $sum += $weight;
        if($sum >= $chance) {
            return $item;
        }
    }
    return "Nothing";
}
print(loot(["candy"=>50]));
print(loot(["chocolate"=>20]));
print(loot(["wurst"=>100]));
print(loot(["a"=>50,"b"=>50]));
Answer 2

Хм, могу предложить Вам использовать if-else, как вариант. К примеру, rand у нас от 1 до 10.

$chance = rand(1,10);
if($chance == 1 or $chance == 2){
    echo $chocolate;
}else if($chance >= 3 and $chance <= 5){
    echo $candy;
}

И так далее.

READ ALSO
Ошибка Notice: Undefined index: Price

Ошибка Notice: Undefined index: Price

Есть такой запрос

302
Как исправить 504 ошибку сервера из-за prestashop?

Как исправить 504 ошибку сервера из-за prestashop?

В административной части Prestashop имеется раздел "ПЕРЕСОЗДАТЬ МИНИАТЮРЫ"Как при попытке пересоздания как всех картинок сразу, так и по отдельности...

350
Заменить URL веб сайта

Заменить URL веб сайта

Есть, допустим, мойсайтru

349
activeCheckboxList (Yii2) как поменять значения value?

activeCheckboxList (Yii2) как поменять значения value?

Делаю вывод таким способом

456