Генератор случайных чисел на Python.

В этой статье мы напишем программу “Угадай число”, которая будет работать на основе генератора чисел. Если вы новичок в Python, тогда советуем сначала изучить статью “Циклы в Python” и потом возвращаться к этой статье.

Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности. Рассмотрим функции модуля:

random.seed([X], version=2) – инициализация генератора случайных чисел. Если X не указан, используется системное время.

random.getstate() – внутреннее состояние генератора.

random.setstate(state) – восстанавливает внутреннее состояние генератора. Параметр state должен быть получен функцией getstate().

random.getrandbits(N) – возвращает N случайных бит.

random.randrange(start, stop, step) – возвращает случайно выбранное число из последовательности.

random.randint(A, B) – случайное целое число N, A ≤ N ≤ B.

random.choice(sequence) – случайный элемент непустой последовательности.

random.shuffle(sequence, [rand]) – перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.

random.sample(population, k) – список длиной k из последовательности population.

random.random() – случайное число от 0 до 1.

random.uniform(A, B) – случайное число с плавающей точкой, A ≤ N ≤ B (или B ≤ N ≤ A).

random.triangular(low, high, mode) – случайное число с плавающей точкой, low ≤ N ≤ high. Mode – распределение.

random.betavariate(alpha, beta) – бета-распределение. alpha>0, beta>0. Возвращает от 0 до 1.

random.expovariate(lambd) – экспоненциальное распределение. lambd равен 1/среднее желаемое. Lambd должен быть отличным от нуля. Возвращаемые значения от 0 до плюс бесконечности, если lambd положительно, и от минус бесконечности до 0, если lambd отрицательный.

random.gammavariate(alpha, beta) – гамма-распределение. Условия на параметры alpha>0 и beta>0.

random.gauss(значение, стандартное отклонение) – распределение Гаусса.

random.lognormvariate(mu, sigma) – логарифм нормального распределения. Если взять натуральный логарифм этого распределения, то вы получите нормальное распределение со средним mu и стандартным отклонением sigma. mu может иметь любое значение, и sigma должна быть больше нуля.

random.normalvariate(mu, sigma) – нормальное распределение. mu – среднее значение, sigma – стандартное отклонение.

random.vonmisesvariate(mu, kappa) – mu – средний угол, выраженный в радианах от 0 до 2π, и kappa – параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к случайному углу в диапазоне от 0 до 2π.

random.paretovariate(alpha) – распределение Парето.

random.weibullvariate(alpha, beta) – распределение Вейбулла.

В нашей программе мы будем использовать функцию randint(). Полный листинг программы:

import random

print("*" * 10, "Угадай число", "*" * 10)

print("Компьютер будет загадывать число от 1 до 100. Попробуйте угадать число. Для выхода введите 0")

answer = 1
score = 0
i = 0

while answer:
    if answer == 0:
        break

    rand = random.randint(1, 100)
    answer = int(input("Число загадано. Попробуйте отгадать: "))
    if answer == rand:
        score = score + 1
        print("Красавчик!")
    else:
        print("Неудачник! Пробуй еще...")
    i = i + 1
print("Всего ты отгадал чисел ", score, "из", i)
print("Приходи когда поумнеешь!")

input("Нажмите Enter для выхода")

Наша программа в цикле while проверяет введенное пользователем значение. Если оно совпадает со сгенерированным в начале итерации случайным значением, значит, выводится соответствующее сообщение и увеличивается значение переменной score.

Параллельно мы ведём счетчик итераций, чтобы знать, сколько попыток совершил пользователь (переменная i). также наша программа выводит статистику по окончанию игры.

rand = random.randint(1, 100) – используем функцию randint и задаем диапазон загадываемых чисел от 1 до 100. Диапазон можно изменить.

Нижеуказанная инструкция выполняет большую роль в нашей программе:

if answer == 0:
    break

Если пользователь введет 0, выполнение будет прервано.

В нашей программе есть небольшой недочет. При чтении данных мы не производим проверку их корректности.

Если пользователь введет строку вместо числа, то выполнение программы будет остановлено, а на консоли будет изображено сообщение об ошибке. Для обработки таких исключений используются блоки try..except.

Вы можете улучшить нашу программу и добавить исключения самостоятельно. В комментариях ждём ваших предложений по поводу улучшений данного кода.

 

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Связи между моделями.

Связи между моделями.

В нашем проекте есть одна модель под названием “Объявления”. В этой статье мы создадим новый класс модели “Rubric”, которая будет представлять рубрики объявлений. Допишем в

 
Параметры полей и моделей.

Параметры полей и моделей.

Для того, чтобы наша административная панель Django выглядела более понятна для обычного пользователя необходимо указать правильные названия полей. Наша созданная модель представляется непонятной аббревиатурой “Bbs”,

 
Административный web-сайт Django.

Административный web-сайт Django.

Административный web-сайт предоставляет доступ ко всем моделям, объявленным во всех приложениях, что составляют проект. С помощью данной панели можно просматривать, добавлять, править и удалять записи,

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: