2015-05-04 18 views
7

In python per il modulo random, qual è la differenza tra random.uniform() e random.random()? Entrambi generano numeri pseudo casuali, random.uniform() genera numeri da una distribuzione uniforme e random.random() genera il successivo numero casuale. Qual è la differenza?In python, qual è la differenza tra random.uniform() e random.random()?

+4

Hai letto [la documentazione] (https://docs.python.org/2/library/random.html)? 'random.uniform (0, 1)' è uguale a 'random.random()'. – jonrsharpe

+0

C'è una differenza, a causa dell'arrotondamento in virgola mobile a volte si può colpire il limite superiore in uniforme –

+1

In realtà secondo la documentazione non sono gli stessi ... –

risposta

3

La differenza è negli argomenti. È molto comune generare un numero casuale da una distribuzione uniforme nell'intervallo [0.0, 1.0), quindi random.random() esegue semplicemente questa operazione. Utilizzare random.uniform(a, b) per specificare un intervallo diverso.

1

Secondo la documentazione sul random.uniform:

restituire un numero punto casuale floating N tale che a < = N < = b per una < = b and b < = N < = a per b < un .

mentre random.random:

ritorno il successivo numero casuale in virgola mobile nell'intervallo [0.0, 1.0).

I.e. con random.uniform si specifica un intervallo da cui si disegnano numeri pseudo casuali, ad es. tra 3 e 10. Con random.random si ottiene un numero compreso tra 0 e 1.

17

random.random() fornisce un numero casuale punto mobile nell'intervallo [0.0, 1.0) (così compreso 0.0, esclusi 1.0 che è anche conosciuto come un semi-aperto gamma). random.uniform(a, b) fornisce un numero a virgola mobile casuale nell'intervallo [a, b], (dove l'arrotondamento potrebbe finire per darti b).

Il implementation of random.uniform() utilizza random.random() direttamente:

def uniform(self, a, b): 
    "Get a random number in the range [a, b) or [a, b] depending on rounding." 
    return a + (b-a) * self.random() 

random.uniform(0, 1) è fondamentalmente la stessa cosa di random.random() (come 1.0 volte valore float più vicino al 1.0 ancora vi darà valore float più vicino al 1.0 non c'è possibilità di un errore di arrotondamento lì).

3

In random.Random() l'uscita è compreso tra 0 & 1, e ci vuole parametri nessun ingresso

considerando random.uniform() prende parametri, in cui è possibile inviare la gamma del casuale numero. ad es.
import random as ra print ra.random() print ra.uniform(5,10)

USCITA: -
0.672485369423 7.9237539416

Problemi correlati