Теоретически вы должны ожидать, что ожидаемое значение будет n * 1/n^3
, что составляет 1/n^2
, учитывая, что у вас есть n
числа в вашем первоначальном списке.Для его моделирования я бы выбрал следующее:
import numpy as np
count = 0
num_iterations = 1000
numbers = [0,1,2,3,4,5,6,7,8,9]
for _ in range(num_iterations):
if len(set(np.random.choice(numbers, 3, replace=True))) == 1:
count += 1
print("Avg is {}".format(count/num_iterations))
Объяснение:
Поскольку numpy.choice
с заменой равномерно выбирает три члена из numbers
, случай трех последовательных выборов:это же число эквивалентно наличию набора с количеством элементов, равным 1. Если вы увеличите num_iterations
примерно до 10000, вы увидите, что он моделирует случай с приемлемой точностью (среднее значение будет около 0,01), что ожидается.