Sto creando una piccola libreria di randomizzazione. Uno dei metodi è simile a System.Random.Next(int start, int end)
di .NET. Il fatto è che non sono sicuro di come decidere se il limite superiore debba essere inclusivo o esclusivo. Mentre Random.Next
di .NET ha un limite superiore esclusivo, ci sono altri framework e librerie che funzionano con bound incluso.
Prima di tutto c'è una domanda sul perché alcuni produttori di biblioteche scelgono il limite superiore per essere esclusivi. IMO, dal punto di vista dell'utente della libreria, non è piacevole.
Ad esempio, lanciare un dado d6 ha il seguente aspetto:
var dieResult = rand.Next(1, 7);
Il secondo argomento suggerisce che 7 sia un risultato valido, o che voglio un numero casuale dall'intervallo di 7 numeri consecutivi a partire dal numero 1. Nessuno dei quali è vero. Non riesco a vedere come la scelta di un limite superiore esclusivo abbia senso.
Inoltre, essendo esclusivo, il limite superiore impedisce a un PRNG di scegliere Int32.MaxValue che è un'altra cosa strana.
Quindi, per riassumere:
- C'è una spiegazione sul motivo per cui gli sviluppatori .NET hanno scelto il limite superiore come esclusivo