HeadlinesBriefing HeadlinesBriefing.com

Por que a seleção aleatória com módulo cria viés

Hacker News •
×

Um padrão comum de programação seleciona itens aleatórios usando módulo: `choices[random_u64() % n]`. Isso parece intuitivo, mas introduz viés estatístico porque o intervalo aleatório raramente se divide uniformemente pelo número de opções.

Por exemplo, ao escolher entre 3 itens usando um número aleatório no intervalo [0, 9], a escolha 1 recebe 4 entradas (0, 3, 6, 9), enquanto as escolhas 2 e 3 recebem apenas 3 entradas cada. A escolha 1 aparece 40% do tempo, em vez dos esperados 33,3%. Esse viés de módulo ocorre sempre que o intervalo aleatório não for múltiplo do número de opções.

A abordagem correta usa `random_between(l, h)`, que distribui a probabilidade corretamente, embora seja mais complexo de implementar. Um melhor design de API forneceria funções de nível superior como `random_choice()` que aceitam distribuições de probabilidade explícitas, obrigando os desenvolvedores a enfrentar diretamente os requisitos de distribuição, em vez de depender de primitivas de baixo nível defeituosas.

Fonte: Hacker News · Resumido por HeadlinesBriefing