c ++ 11 random: perché diversi range di int e real?

2

Nel c ++ 11, ora abbiamo < random > per produrre un numero casuale. A proposito di distribuzioni uniformi, abbiamo seguito int_distribution e double_distribution :

uniform_int_distribution-produces integer values evenly distributed across a range

uniform_real_distribution-produces real values evenly distributed across a range

Il primo produce valori interi casuali i, uniformemente distribuiti nell'intervallo chiuso [a, b] , ma il secondo, cioè quello reale, produce valori a virgola mobile casuali i, uniformemente distribuiti sul intervallo [a, b)

Domanda: perché la distribuzione int e reale ha un intervallo diverso, ovvero per un%, la percentuale è compresa, ma per un altro b] è esclusiva?

Se è correlato con gli algoritmi alla base, mi piacerebbe sapere quali sono e dove sono le differenze. O le preferenze a riguardo.

    
posta Tony 19.02.2015 - 14:00
fonte

2 risposte

2

Uniform_real_distribution ha un intervallo chiuso fino al 2006, dopo di che è stato modificato in un intervallo semiaperto perché gli sviluppatori si dicono più a proprio agio con esso .

    
risposta data 19.02.2015 - 16:38
fonte
1

Gli intervalli chiusi "si sentono" più naturali in un ambiente discreto. Gli intervalli semiaperti "sentono" più naturale in un contesto continuo (beh, si sentono più naturali anche per i razionali, ma ...).

Sarei sorpreso da una funzione "genera numeri interi" che non utilizzava intervalli se gli davo un minimo e un massimo espliciti, ma fondamentalmente sono OK con un argomento a un solo argomento che accetta rand (N) e mi dà un risultato in [0, N-1], ma se lo prendo rand (a, b) in realtà voglio [a, b].

    
risposta data 19.02.2015 - 14:35
fonte

Leggi altre domande sui tag