Сложность: medium
Дано API rand7(), возвращающее случайное целое число от 1 до 7.
Нужно реализовать функцию rand10(), возвращающую случайное число от 1 до 10, используя только rand7().
Пример:
Input: n = 1
Output: [2]
👨💻 Алгоритм:
1⃣Используем формулу:
idx = (row - 1) * 7 + col — генерирует числа от 1 до 49.
2⃣Принимаем только значения 1..40, т.к. они равномерно делятся на 10.
3⃣Остальные (41..49) отбрасываем и пробуем снова — чтобы не нарушить равномерность.
😎 Решение:
class Solution {
public function rand10() {
do {
$row = rand7();
$col = rand7();
$idx = $col + ($row - 1) * 7;
} while ($idx > 40);
return 1 + ($idx - 1) % 10;
}
}Ставь 👍 и забирай 📚 Базу знаний
