использование случайного подбрасывания монет, и это сработает

#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))