Генерация базовых лотерейных номеров
Теперь, когда мы понимаем, как генерировать случайные числа в Python, давайте сосредоточимся на создании уникальных лотерейных номеров. Большинство лотерейных игр требуют набора уникальных номеров в определенном диапазоне.
Использование random.sample для уникальных номеров
Функция random.sample() идеально подходит для генерации лотерейных номеров, потому что она выбирает уникальные элементы из последовательности. Давайте создадим новый файл, чтобы поэкспериментировать с этой функцией:
- В WebIDE перейдите в каталог
~/project/lottery
- Создайте новый файл с именем
basic_lottery.py
Добавьте следующий код в файл:
import random
## Generate 6 unique numbers from 1 to 49 (common lottery format)
lottery_numbers = random.sample(range(1, 50), 6)
print(f"Your lottery numbers are: {lottery_numbers}")
## Sort the numbers (many lottery displays show numbers in ascending order)
lottery_numbers.sort()
print(f"Your lottery numbers (sorted): {lottery_numbers}")
## Generate a different lottery format (e.g., 5 numbers from 1-69 and 1 from 1-26)
main_numbers = random.sample(range(1, 70), 5)
special_number = random.randint(1, 26)
print(f"Main numbers: {sorted(main_numbers)}, Special number: {special_number}")
Сохраните файл и запустите его в терминале:
cd ~/project/lottery
python3 basic_lottery.py
Вы должны увидеть вывод, похожий на:
Your lottery numbers are: [23, 8, 45, 17, 34, 9]
Your lottery numbers (sorted): [8, 9, 17, 23, 34, 45]
Main numbers: [4, 28, 35, 47, 62], Special number: 13
Понимание работы random.sample
Функция random.sample(population, k) принимает два аргумента:
population - Последовательность для выборки (в нашем случае, range(1, 50))
k - Количество уникальных элементов для выбора (в нашем случае, 6)
Функция гарантирует, что все выбранные элементы уникальны. Это идеально подходит для лотерейных номеров, так как лотерейные игры требуют уникальных номеров без повторений.
Альтернативный метод: использование множества (Set)
Другой способ генерации уникальных лотерейных номеров - использовать множество (set) Python, которое хранит только уникальные элементы. Давайте добавим этот альтернативный подход в наш файл:
## Alternative approach using a set
print("\n--- Alternative approach using a set ---")
lottery_numbers_set = set()
## Keep adding random numbers until we have 6 unique numbers
while len(lottery_numbers_set) < 6:
lottery_numbers_set.add(random.randint(1, 49))
print(f"Lottery numbers using set: {sorted(lottery_numbers_set)}")
Сохраните и снова запустите программу:
python3 basic_lottery.py
Теперь вы должны увидеть дополнительный вывод:
--- Alternative approach using a set ---
Lottery numbers using set: [4, 12, 27, 39, 44, 49]
Оба метода дают один и тот же результат - набор уникальных случайных чисел. Разница в том, как они этого достигают:
random.sample() выбирает уникальные элементы сразу
- Подход с использованием множества добавляет числа по одному, автоматически обрабатывая дубликаты
Для большинства лотерейных приложений random.sample() более эффективен, но понимание обоих подходов дает вам гибкость в вашем программировании.