2016-10-05 5 views
1

Я пытаюсь написать код, который учитывает вероятность смещенной монеты с диапазоном от 0 до 1, в качестве ввода от пользователя, и проверяет количество монетных флагов, где p - вероятность появления флип в результате heads.Here то, что я до сих пор:Предвзятая монета флип

import random 
i = 0 
for i in range(3): 
    i = i + 1 
#I want to call biasedflip function here 

p = input("Enter probability:") 
def biasedflip(): 
    if random.random() < p: 
     print("Heads") 
    else: 
     print("Tails") 
+1

Что вы хотите сказать? – Li357

+0

Существует множество синтаксических ошибок. Сначала вы можете начать с базового учебника Python, прежде чем пытаться что-то сделать, как то, что вы пытаетесь сделать. –

+0

Мой вопрос - вот какой код для генерации смещенного флага для монет –

ответ

1

("Это ответ основан на последней версии питона, поэтому убедитесь, что вы используете 3.5.x иначе некоторые обозначения не могут работать правильно ")

Во-первых, ваша функция« biasedflip »требует скобок после имени и перед двоеточием для правильной записиТак оно и должно быть:

def biasedflip(): 

Во-вторых, чтобы сделать его проще изменить вероятность использовать диапазон 1-100, так что вы можете избежать десятичные, чтобы сделать его легче следовать через Так что, когда они входной (р) должно быть 1-100, и это будет решать ваши терпеть неудачу значение, которое где, если она равна или выше, чем показывает Хвосты Вы можете произвести это с помощью:

random.randint(1,100) 

^ Это генерирует случайное число используя инклюзивный диапазон 1-100, а не ваш random.random(), который не является будет функционировать.

После редактирования случайного заявления вы тогда просто изменить свой, если заявление выглядеть следующим образом:

if random.randint(1,100) < Probability: 

    print("Heads") 

else: 

    print("Tails") 

При запуске программы вы должны также установить количество перестроек как вход, так что вы можете проверить его несколько раз вместо редактирования кода, так что добавьте новую переменную NumberOfTrials:

NumberOfTrials = int(input("How many times do you wish to flip the coin? ")) 

^ Это превращает их вклад в целое число, поэтому он может быть использован в функции диапазона

С входом для вероятности питона имеет стандартные входы быть строки, так что вы должны преобразовать входные в целое число, которое вы можете сделать с помощью:

Probability = int(input("Enter a probability for heads between 1 and 100")) 

^Это преобразует входные данные прямо в целое число и присвоить его вероятность, я изменил имя переменного из «р» на «вероятность», так что использование четко определенная

на этом этапе из верхней части вашей программы она должна выглядеть так:

import random 

i = 0 
Probability = int(input("Enter a probability for heads between 1 and 100: ")) 
NumberOfTrials = int(input("How many times do you wish to flip the coin? ")) 

def biasedflip(): 

    if random.randint(1,100) < Probability: 

     print("Heads") 

    else: 

     print("Tails") 

Далее мы добавим еще 2 новых переменные, так что вы можете хранить итоговые данные для глав и Хвосты отдельно, чтобы для справок:

TotalHeads = 0 
TotalTails = 0 

^Они начинаются 0 и будут определены до функции, поэтому они не являются перезагружайте каждый раз, когда мы вызываем его, только каждый раз, когда программа сбрасывается

Заключительный этап - это добавление цикла, а затем отображение общего количества голов и хвостов. Это можно сделать, используя цикл while и переменную count (i), которую вы уже определили ранее, и установите значение 0.Это будет что-то вроде:

while i < NumberOfTrials: 
    biasedflip() 
    i += 1 

^После добавления этого цикла мы должны изменить нашу функцию так, чтобы TotalHeads и TotalTails переменные увеличиваются внутри функции, а не усложнять ее и редактирование внутри и вне этой функции. Это просто связано с добавлением TotalHeads + = 1 под операцией Print («Heads») и TotalTails + = 1 под операцией Print («Tails»). Важное замечание состоит в том, что мы установили переменные вне функции, которые у нас должны были иметь 2 глобальных оператора, чтобы вызвать переменные в функцию, позволяющую редактировать, эти утверждения выглядят как global TotalHeads и global TotalTails и должны быть первые команды функции.

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

import random 

TotalHeads = 0 
TotalTails = 0 
i = 0 
Probability = int(input("Enter a probability for heads between 1 and 100: ")) 
NumberOfTrials = int(input("How many times do you wish to flip the coin? ")) 

def biasedflip(): 

    global TotalTails 
    global TotalHeads 

    if random.randint(1,100) < Probability: 

     print("Heads") 
     TotalHeads += 1 

    else: 

     print("Tails") 
     TotalTails += 1 

while i < NumberOfTrials: 
    biasedflip() 
    i += 1 

print("After {0} flips there was {1} Head(s) and {2} Tail(s)".format(NumberOfTrials,TotalHeads,TotalTails)) 

^Вы можете видеть на эту последнюю команду я использовал .format означает, что вы можете использовать заполнитель {0} значений для заполнения с переменными, такими как NumberOfTrials, так что вы можете сделать предложения редактируемых через программу и посмотреть аккуратнее при печати

Кроме того, для вызова функций общего формата является FunctionName() но белым en должно быть def Имя функции():