2013-02-04 6 views
9

Desidero selezionare casualmente n righe dal mio set di dati utilizzando la funzione sample() in R. Stavo ricevendo uscite diverse ogni volta e quindi usavo la funzione set.seed() per ottenere lo stesso risultato. So che ogni numero intero nel set.seed() mi darà un output unico e l'output sarà lo stesso se impostato lo stesso seme. Ma non sono in grado di capire quale sia l'intero che viene passato come parametro alla funzione set.seed(). È solo un indice che entra nell'algoritmo del generatore casuale o significa una parte dei dati da cui si avvia il campionamento? Ad esempio, cosa significa il 2 in set.seed(2)?Che cosa significa il numero intero durante l'impostazione del seme?

risposta

6

Un seme casuale (o stato seme o solo seme) è un numero (o vettore) utilizzato per inizializzare un generatore di numeri pseudocasuali.

Per un seme da utilizzare in un generatore di numeri pseudocasuali, non è necessario che sia casuale. A causa della natura degli algoritmi di generazione dei numeri, finché il seme originale viene ignorato, il resto dei valori che l'algoritmo genera seguirà la distribuzione di probabilità in modo pseudocasuale.

- wikipedia

Quindi, funzione random potrebbero essere attuate in questo modo:

int rand_r(unsigned int *seed) 
{ 
    *seed = *seed * 1103515245 + 12345; 
    return (*seed % ((unsigned int)RAND_MAX + 1)); 
} 

(campione prelevato da glibc)

+0

Ho capito. È come un parametro che entra nel generatore di numeri psuedo-random, che restituisce un numero o una serie o numeri generati dall'algoritmo. –

+0

esattamente. inoltre, è possibile calcolare un numero "casuale" arbitrario. informazioni belle e brevi possono essere trovate qui [link] (http://www.mathstat.dal.ca/~selinger/random). assicurati anche di chiamare la funzione seed una sola volta o potresti avere la stessa serie di numeri casuali (almeno in C). – kometonja

4

È solo un numero utilizzato per impostare i semi per il generatore di numeri casuali. Non ha niente a che fare con i tuoi dati. Se non si fornisce esplicitamente un seme, ne viene creato uno nuovo dall'ora corrente.

Vedere la pagina di guida ?set.seed per un sacco di dettagli su di esso.

15

Ai vecchi tempi, c'erano libri che contenevano pages and pages of random digits (in ordine casuale, ovviamente).

Mi piace pensare a set.seed(x) come dire al computer di iniziare a leggere numeri casuali dalla pagina x in un enorme libro di numeri casuali. x non ha nulla a che fare con i dati, ma come dovrebbe iniziare l'algoritmo per la scelta dei numeri casuali.

Questo potrebbe essere un po 'facile, ma mi piace l'analogia.