Randomness and simulation · Случайность и симуляция
What we'll do
- Some programs need chance, like games or experiments.
- Python can make random numbers for us.
- We will also build a tiny simulation (a model of something real).
Что мы сделаем
- Некоторым программам нужен случай, например играм или экспериментам.
- Python может генерировать для нас случайные числа.
- Мы также создадим маленькую симуляцию (модель реального процесса).
Import random
- The random tools live in a module named
random. - Write
import randomat the top of your program. - Then you can use its functions, like
random.randint.
Импорт random
- Инструменты случайности находятся в модуле под именем
random. - Напишите
import randomв начале вашей программы. - Тогда вы сможете использовать его функции, например
random.randint.
import random
number = random.randint(1, 6)
print(number)
random.randint(a, b)
random.randint(a, b)gives a whole number fromatob.- Both ends are included:
randint(1, 6)can be1,6, or anything between. - Run it again and you may get a different number.
random.randint(a, b)
random.randint(a, b)возвращает целое число отaдоb.- Оба края включены:
randint(1, 6)может быть равно1,6или любому числу между ними. - Запустите снова, и вы можете получить другое число.
import random
for i in range(3):
print(random.randint(1, 6))
Same numbers with a seed
- A seed sets the random start point.
- With the same seed, you get the same numbers every time.
- This is useful for testing, so results can be repeated.
Одинаковые числа с seed
- Seed (зерно) устанавливает начальную точку генерации случайных чисел.
- С одинаковым seed вы будете получать одни и те же числа каждый раз.
- Это полезно для тестирования, чтобы результаты можно было воспроизвести.
import random
random.seed(42)
print(random.randint(1, 6))
print(random.randint(1, 6))
A tiny simulation
- A simulation models a real process with code.
- Here we model flipping a coin many times and counting heads.
- Running many trials helps us see the long-run pattern.
Маленькая симуляция
- Симуляция моделирует реальный процесс с помощью кода.
- Здесь мы моделируем многократное подбрасывание монеты и подсчёт выпадений орла.
- Выполнение большого количества испытаний помогает увидеть долгосрочную закономерность.
import random
random.seed(1)
heads = 0
for i in range(10):
flip = random.randint(0, 1) # 0 = tails, 1 = heads
if flip == 1:
heads = heads + 1
print(heads)
In AP CSP pseudocode
- The exam writes random numbers with
RANDOM. RANDOM(a, b)gives a whole number fromatob, the same idea asrandom.randint(a, b).
Псевдокод в AP CSP
- На экзамене случайные числа генерируются с помощью
RANDOM. RANDOM(a, b)возвращает целое число отaдоb, та же идея, что и уrandom.randint(a, b).
roll ← RANDOM(1, 6)
DISPLAY(roll)
Common mistakes
- A simulation uses random values to model chance.
- Run it many times to see the overall pattern.
Распространенные ошибки
- Симуляция использует случайные значения для моделирования вероятностей.
- Запускайте её много раз, чтобы увидеть общую закономерность.
Now you try
- Some tasks check a property (like "the roll is between 1 and 6").
- Some tasks use a seed so the output is the same every time.
- Press Check answer to test your code.
Теперь попробуйте сами
- Некоторые задания проверяют свойство (например, «выпало число от 1 до 6»).
- Некоторые задания используют seed, чтобы вывод был одинаковым каждый раз.
- Нажмите Check answer (Проверить ответ), чтобы протестировать свой код.
Write roll_die() (no parameters) that returns a random whole number from 1 to 6 using random.randint. Remember import random. · Напишите процедуру roll_die() (без параметров), которая возвращает случайное целое число от 1 до 6, используя функцию random.randint. Не забудьте использовать import random.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Write roll_two() that rolls two dice (each 1 to 6) and returns their total. The total is always between 2 and 12. · Напишите процедуру roll_two(), которая бросает два кубика (каждый от 1 до 6) и возвращает их сумму. Сумма всегда находится в диапазоне от 2 до 12.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Copy this exactly: set random.seed(7), then flip a coin 20 times with random.randint(0, 1) (1 means heads), count the heads, and print the count. With this seed the answer is always the same. · Скопируйте это точно: установите random.seed(7), затем подбросьте монету 20 раз с помощью random.randint(0, 1) (1 означает орел), подсчитайте количество орлов и print результат. С этим seed ответ всегда одинаков.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.