2015-02-05 3 views
0

Я использую Python 2.7 для создания двух случайных чисел, как 1-100 (включая и), и если они совпадают, происходит событие. Я бы думать, что вероятность этого будет 1/10000 потомуВероятность кажется неправильным использованием Python randint

1/100 * 1/100 = 1/10000

но число раз, что он принимает на два номера, чтобы соответствовать обычно составляет от 10 до 200. Почему это происходит и есть ли способ исправить это?


Вот мой полный код:

import random 
p5SickGen1 = random.randint(1,100) 
p5SickGen2 = random.randint(1,100) 
counter = 0 
while p5SickGen1 != p5SickGen2: 
    counter += 1 
    p5SickGen1 = random.randint(1,100) 
    p5SickGen2 = random.randint(1,100) 

print(counter) 

ответ

4

Как указано @jgritty, ваше предположение не то..

Вероятность не будет 1/10000, потому что вы выбираете из двух разных наборов чисел одновременно, что не означает, что вы выбираете число из набора чисел дважды.

Вы можете легко найти решение, подобное этому;

Число возможностей получения одинаковых номеров;

(1,1), (2,2), (3,3), (4,4), (5,5), ..., (100, 100) = 100 

Ваш образец пространство 100 * 100 = 10000. Таким образом, вероятность получения одинаковых чисел в одном выборе;

100/10000 = 0.01 

Надеюсь, это поможет.

Btw, для тех, кто интересуется основами вероятности, вы можете начать с here.

3

Ваше предположение неверно. Здесь нет ничего плохого.

Шансы чисел идут вверх то же два раза подряд просто 1 в 100.

Теперь, если вы выбираете определенное количество, скажем, 42. Вероятность получения 42 оба раза в 1 в 10000 .