#python
#python
Вопрос:
Итак, я попытался создать программу, которая переворачивала кучу монет, random.randint(0,1)
переключая их, и запускала ее, например, 100 раз (с циклом while), но она всегда выдавала 0 в качестве справки о счете?
Код:
import random
i = int(1) # the thing to count how many coins have been fliped
score = int(0) #the score
coins = int(100) # the amont of coins to ble fliped
while i <= coins:
rand = random.randrange(0,1)
score = rand
i = 1
print("your score is", score)
print("you flipped ", coins, " coins")
optuput на консоль (я использую sublime atm, но я тоже попробовал cmd и получил то же самое):
your score is 0
you flipped 100 coins
[Finished in 0.8s]
Комментарии:
1. во-первых, вам не нужно выполнять int() для числового литерала, это уже int
2. я сделал это на всякий случай, если возникла проблема, потому что сначала я попытался сделать так, чтобы вы могли ввести количество монет, которые вы хотели перевернуть
3. Просто измените его на
random.randrange(0,2)
4. В качестве примечания, 1 — это an
int
, поэтому напишитеi = 1
вместо бесполезногоi = int(1)
Ответ №1:
Из документов randrange
функции:
Возвращает случайно выбранный элемент из диапазона (start, stop, step). Это эквивалентно выбору (диапазон (начало, остановка, шаг)), но на самом деле не создает объект диапазона.
и range
:
Для положительного шага содержимое диапазона r определяется по формуле r[i] = start step * i, где i > = 0 и r[i] < stop .
Для отрицательного шага содержимое диапазона по-прежнему определяется формулой r[i] = start step * i, но ограничениями являются i > = 0 и r [i]> stop .
Замените randrange
на randint
, и вы получите ожидаемые подбрасывания монет.
Ответ №2:
Точно так же, как range(0, 1) даст вам все числа от 0 до 1, не включая 1, т.Е. Только 0, функция randrange (0, 1) будет выбирать числа случайным образом от 0 до 1, не включая 1. Вместо этого попробуйте randrange(0, 2).
Или даже лучше:
import numpy as np
np.random.randint(0, 2, 100)
И среднее значение можно найти как
np.mean(np.random.randint(0, 2, 100))