LeetCode470 - Реализовать Rand10 () Использование Rand7 () - Medium (Python)

Учитывая функцию  , 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
        
        
            
        

рекомендация

отwww.cnblogs.com/sky37/p/12244492.html