ответ: сообщение о результатах лотереи "6 из 36" несёт больше информации.
Объяснение:
Используем формулы на мощность алфавита:
Где i - вес символа, а N - мощность алфавита (количество букв в нём).
Узнаем информационный вес символа каждой лотереи:
Первая
Нужно взять минимально возможное целое i, чтобы выражение было равно или больше мощности алфавита.
2⁶ = 64, значит один символ весит 6 бит.
6 × 6 = 36 бит - информационный объём первой лотереи.
Вторая
2⁶ = 64 бита, значит один символ весит 6 бит.
6 × 5 = 30 бит - информационный объём второй лотереи.
$result = array();
$arr = array ('310'=>0.5, '311'=>0.375, '312'=>0.1);
function rec($str) {
$sum = 0;
foreach ($str as $i) #Вычисляем уже имеющуюся сумму
$sum += $GLOBALS["arr"][$i];
if ($sum == 1.5)
$GLOBALS["result"][] = $str;
if ($sum > 1.5) return;
foreach ($GLOBALS["arr"] as $key=>$value) {
$hello = $str; #Не знаю, насколько это легально, но заработало только так...
$hello[] = $key;
rec($hello);
}
}
if (min(array_values($arr)) <= 0) die(); #Бесконечнная рекурсия должна быть предотвращена
rec(array());
foreach ($result as &$value) #Переделываем массив массивов в массив строк
$value = implode(', ', $value);
unset($value);
print_r($result);
?>