Как сделать рандом с процентами?
Можно для каждого значения сделать вес, можете сделать так, чтобы сумма все х весов была 100, 
но не обязательно — это могут быть произвольные значения. Главное, что доля веса от суммы всех весов — будет вероятностью данного элемента. 

Такой способ делает ваши значения управляемыми буквально одним параметром веса.
И не нужно шатать код.

Обновление от 13.06.2020:
Так вышло, что мой тимлид математик и нашел интересное и эффективное решение этой задачи
<?php

$values = [
    ['value' => 'One', 'weight' => 20],
    ['value' => 'Two', 'weight' => 30],
    ['value' => 'Three', 'weight' => 50]
];

function randByWeight(array $arr) {
    $max = 0;
    $result = [];
    foreach($arr as $value) {
        $rand = pow((mt_rand() / (mt_getrandmax() + 1)), 1/$value['weight']);
        if ($rand > $max) {
            $max = $rand;
            $result = $value;
        }
    } 

    return $result;
}

// Например: 'Three' выпадет в 50% случаев, тк его вес -- половина от суммы всех весов
// Например: 'Two' выпадет в 30% случаев, тк его вес -- 30% от суммы всех весов
var_dump(randByWeight($values));
sandbox.onlinephpfunctions.com/code/39de2d54a298de...

Чем хорошо это решение — его можно использовать прямо в SQL запросе!
SELECT * FROM table ORDER BY POWER(random(), 1/weight) DESC LIMIT 1

Классическое решение:
<?php

$values = [
    ['value' => 'One', 'weight' => 20],
    ['value' => 'Two', 'weight' => 30],
    ['value' => 'Three', 'weight' => 50]
];

function randByWeight(array $items) {
    $sum = array_reduce($items, function(int $acc, array $item): int {
        return $acc += $item['weight'];
    }, 0);
    
    $rand = (mt_rand() / (mt_getrandmax() + 1)) * $sum;

    foreach($items as $item) {
        if($rand < $item['weight']) {
            return $item;
        }
        
        $rand -= $item['weight'];
    }
}

// Например: 'Three' выпадет в 50% случаев, тк его вес -- половина от суммы всех весов
// Например: 'Two' выпадет в 30% случаев, тк его вес -- 30% от суммы всех весов
var_dump(randByWeight($values));
sandbox.onlinephpfunctions.com/code/aee9dca651213e...
Сделай массив элементов. Туда добавляй столько элементов, сколько у него шанс выпадения. One - 70 раз, Two - 20 раз. И рандомно выбирай из массива элемент
$items_set = array();
		foreach ( $items as $item_id => $item ) {
			for ( $i = 0; $i < $item['chance']; $i ++ ) {
				$items_set[] = $item_id;
			}
		}
		$rand_id = $items_set[array_rand( $items_set )];

		$rand_item = $items[$rand_id];

		return $rand_item["id"];