Одна из ваших проблем заключается в том, что random.randomint должен быть
A = random.randint(0, 1) # random 0 and 1
B = random.randint(0, 1) # random 0 and 1
Ваша версия производила нули, единицы и двойки.Это полностью испортило шансы на получение голов, так как вы действительно бросали 3-х сторонний кубик со сторонами = [0,1,2], где выигрывает только «1».Пытаясь сделать следующее:
import random
random.seed(123)
Atoss = 0
Btoss = 0
Awins = 0
Bwins = 0
for i in range(4000):
head = False
while (not head):
A = random.randint(0, 1) # random 0 and 1
if A == 1:
Awins+=1
head = True
else:
B = random.randint(0, 1) # random 0 and 1
if B == 1:
Bwins+=1
head = True
probA = Awins / (Awins+Bwins)
probB = Bwins / (Awins+Bwins)
print("Probability A: ", probA)
print("Probability B: ", probB)
Out:
'Probability A: 0.6653336665833541'
'Probability B: 0.3346663334166458'
Я получаю, что вероятность составляет ~ A: 66% B: 33%.
Обратите внимание, в документации от random.py
random.randint (a, b) -Возвратите случайное целое число N так, чтобы a <= N <= b. </p>
, который отличается от numpy.random.randomint, который дает
- случайное целое число N такое, что <= N <b </p>
Документация находится здесь