Учитывая функцию , rand7
которая генерирует однородное случайное целое число в диапазоне от 1 до 7, написать функцию , rand10
которая генерирует однородное случайное целое число в диапазоне от 1 до 10.
Не используйте системы Math.random()
.
Пример 1:
Входной сигнал: 1
Выход: [7]
Пример 2:
Входной сигнал: 2
Выход: [8,4]
Пример 3:
INPUT: 3 Вывод: [8,1,10]
мышления: смысл вопросов относительно прост, с rand7 () для достижения rand10 (). rand7 () производится 1-7 все целые числа, rand10 () Мы надеемся , что все целые числа 1-10. Очевидно одно, если мы назовем только один раз rand7 (),
мы не можем производить 8,9,10 три цифры. Таким образом , очевидно , что мы должны назвать по крайней мере , в 2 раза. называющие 2 раза в диапазоне чисел будет генерируемых 1-49, обратите внимание , что не 1-14. (умножение , чем сложение) 1-49 Если мы можем отбросить 41-49. Таким образом , в настоящее время
мы имеем 1-40 и может производить при условии требование равномерного случайным. Таким образом, если субъект не требуется , чтобы произвести переход 1-40 на выходе является ответ на это сгенерированном случайное число и взятие остатка после 10, 40% до 10 плюс 1. В противном случае = 0.
класс Решение: Защита rand10 (Я): "" " : RTYPE: ИНТ """ ранд = 41 , а рэнд> = 41 : рэнд = (rand7 () - 1) * 7 + rand7 () возвращение рэнд% 10 +1