Сегодня с коллегой обсуждали интересный факт из теории вероятностей про выбор наибольшего числа.

Задача чем-то напоминает задачу о двух конвертах

Я даже написал симулятор на kotlin:

package ru.yamakarov

import org.apache.commons.math3.distribution.UniformRealDistribution

fun main(args: Array<String>) {
    var s = 0.0
    var i = 0
    val n = 10000
    val random = UniformRealDistribution(
            - Double.MAX_VALUE,
            Double.MAX_VALUE)
    while (i < n) {
        i++
        val a = random.sample()
        val b = random.sample()
        val t = random.sample()

        val r = if (a > t) a else b

        s += if (r == Math.max(a, b)) 1 else 0
    }

    println(s / n)

}

Оказалось, что выбирать при выборе t случайным образом вероятность где-то 0.67, а если брать середину интервала то получается 0.75

И тут я не понял как моделировать бесконечные числа на компьютере. Вероятность выбрать число среди бесконечного числа возможностей равна 0, а среди конечного пусть маленькая, но отличная от ноля. И стратегия с 0 на бесконечном интервале не должна работать, однако я не нашел способа это проверить.