Думаю, вы неправильно поняли свою задачу. Исходя из поставленного вопроса, я ожидаю, что правильное решение будет выглядеть примерно так:
import random
def contains_duplicates(X):
seen = set()
seen_add = seen.add
for x in X:
if (x in seen or seen_add(x)):
return True
return False
def approximateProbability(num_people, num_tests):
tests = [[random.randint(1,365) for _ in range(num_people)] for _ in range(num_tests)]
results = [contains_duplicates(x) for x in tests]
return results.count(True)/len(results)
# Testing with 23 people and 1000 tests - should return about 0.5
print(approximateProbability(23,1000))
Этот код принимает число людей (N) и количество выполняемых имитаций и выводит процентсимуляции, в которых один или несколько человек праздновали день рождения.
Если это не то, что вы хотели, дайте мне знать.