Проблема с Numpy: Попытка смоделировать 1000 серий бросков монет N - PullRequest
0 голосов
/ 05 октября 2018

Итак, я пытаюсь вычислить шансы двух серий бросков монет с одинаковым количеством голов.Одно из требований заключается в том, что я делаю это, имитируя 1000 серий бросков монет N, где пользователь выбирает количество бросков монет в 1 серии.Тем не менее, я столкнулся с проблемой с симуляцией:

import numpy as np
user_series = int(input("How many series?"))
pairs = 0
tosses = 0
pair1_list = []
pair2_list = []
while tosses < 1000:
    pair1 = np.random.randint(1, 2, size = user_series)
    if pair1 == 1:
        pair1_list.append("H")
    elif pair1 == 2:
        pair1_list.append("T")
    pair2 = np.random.randint(1,2, size = user_series)
    if pair2 == 1:
        pair2_list.append("H")
    elif pair2 == 2:
        pair2_list.append("T")
    tosses += 1
print(pair1_list)
print(pair2_list)

Это дает мне следующую ошибку:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Я предполагаю, что есть проблема с ifзаявление (я), но я не знаю, как решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

np.random.randint(1, 2, size=5) возвращает array([1, 1, 1, 1, 1]).Вы не можете реально сравнить массив длины user_series с одним значением 1 или 2.

См. https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.randint.html

Обратите внимание, что в соответствии с документацией high определяется как

... один над наибольшим (подписанным) целым числом ...

, поэтому np.random.randint(1, 2, size=5) вернет только 1.

0 голосов
/ 05 октября 2018

import numpy as np
user_series = int(input("How many series?"))
pairs = 0
tosses = 0
pair1_list = []
pair2_list = []
while tosses < 1000:
    pair1 = np.random.randint(1, 2, size = user_series)
    if pair1 == 1:
        pair1_list.append("H")
    elif pair1 == 2:
        pair1_list.append("T")
    pair2 = np.random.randint(1,2, size = user_series)
    if pair2 == 1:
        pair2_list.append("H")
    elif pair2 == 2:
        pair2_list.append("T")
    tosses += 1
    return tosses
print(pair1_list)
print(pair2_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...