Как сделать al oop в al oop (Python)? - PullRequest
0 голосов
/ 28 мая 2020

Я хотел бы выполнить al oop в al oop, но когда я пытаюсь это сделать, я ловлю неправильный расчет по сравнению с единственным l oop.

Мой код с единственным l oop, который работает:

betresult = []

#main parameters
budget = 1500
numofbets = 100
win = 7.5
loss = -15


for i in range(numofbets):
    #random list: 1 - win, 0 - loss
    test = np.random.choice(np.arange(0, 2), p=[0.333, 0.667])
    betresult.append(test)

    #number of win and loss
    winbets = np.sum(betresult)
    lossbets = numofbets - winbets

    #sum of win and loss
    winsum = winbets * win
    losssum = lossbets * loss

    #final sum
    result = budget - (winsum + losssum)

print(result)

И я хотел бы поместить этот код в новый l oop, но если я сделаю что-то явно с while или for, я поймаю неправильный расчет.

С единичным l oop Я обычно получаю one number between 1100 and 1800.

Код с неправильным расчетом:

betresult = []

#main parameters
budget = 1500
numofbets = 100
win = 7.5
loss = -15

for i in range(10):   
    for j in range(numofbets):
        #random list: 1 - win, 0 - loss
        test = np.random.choice(np.arange(0, 2), p=[0.333, 0.667])
        betresult.append(test)

        #number of win and loss
        winbets = np.sum(betresult)
        lossbets = numofbets - winbets

        #sum of win and loss
        winsum = winbets * win
        losssum = lossbets * loss

        #final sum
        result = budget - (winsum + losssum)

     print(result)

С двойным l oop Я обычно получаю a number under 0. И чем больше диапазон al oop, тем больше число меньше 0.

Пример неправильного выполнения (расчета):

1470.0
7.5
-1590.0
-3007.5
-4447.5
-5910.0
-7440.0
-8835.0
-10410.0
-11985.0

Ответы [ 2 ]

3 голосов
/ 28 мая 2020
import numpy as np
betresult = []

#main parameters
budget = 1500
numofbets = 100
win = 7.5
loss = -15
summary = 0
for i in range(80):   
    for i in range(numofbets):
        test = np.random.choice(np.arange(0, 2), p=[0.333, 0.667])
        betresult.append(test)

        winbets = np.sum(betresult)
        lossbets = numofbets - winbets

        winsum = winbets * win
        losssum = lossbets * loss

        result = budget - (winsum + losssum)
     #betresult.clear() should be outside the second loop
     betresult.clear()

print(result)

Я думаю, вам нужно очищать свой betresult каждый раз, когда вы запускаете этот l oop. Возможно, вам понадобится дополнительный код для расчета, в зависимости от того, что вы хотите.

3 голосов
/ 28 мая 2020

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

import numpy as np


#main parameters
budget = 1500
numofbets = 100
win = 7.5
loss = -15

for i in range(10):
    #declaring inside the first loop
    betresult = []
    for j in range(numofbets):
        #random list: 1 - win, 0 - loss
        test = np.random.choice(np.arange(0, 2), p=[0.333, 0.667])
        betresult.append(test)

        #number of win and loss
        winbets = np.sum(betresult)
        lossbets = numofbets - winbets

        #sum of win and loss
        winsum = winbets * win
        losssum = lossbets * loss

        #final sum
        result = budget - (winsum + losssum)
    print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...