Шанс на рандомные числа

Каков шанс того, что одно рандомное число от 1 до 10 будет равно другому рандомному числу от 1 до 10?


Ответы (1 шт):

Автор решения: CrazyElf

Допустим, что генератор чисел "честный" и вероятность выпасть для каждого числа одинаковая. Тогда:

  • шанс, что выпадет какое-то конкретное число: 1/10
  • шанс, что выпадут подряд два одинаковых таких числа: 1/10 * 1/10
  • поскольку нам всё-равно, какое именно число выпадет, то вариантов конкретного числа у нас 10

Перемножаем это всё: 1/10 * 1/10 * 10 = 1/10

Проверим на всякий случай с помощью Питона на выборке из 100 000 пар случайных чисел:

import random

n = 100_000
print(sum(random.randint(1, 10) == random.randint(1, 10) for _ in range(n)) / n)

Вывод:

0.09964

ГСЧ у любого языка программирования не совсем идеальный, но получилось вполне близко к 1/10 или 0.1.

Или даже так. Сделаем серию экспериментов - 100 экспериментов по 100 000 пар случайных чисел и посмотрим у них среднее и стандартное отклонение:

import numpy as np

k = 100
n = 100_000
tests = (np.random.randint(1, 11, (n,k)) == np.random.randint(1, 11, (n,k))).mean(axis=0)
print(f'{tests.mean():0.3f}±{tests.std():0.3f}')

Ну, тут ещё точнее получается:

0.100±0.001
→ Ссылка