2013-02-04 8 views
9

Chcę losowo wybrać n wierszy z mojego zestawu danych za pomocą funkcji sample() w R. Za każdym razem otrzymywałem różne wyniki, a zatem użyłem funkcji set.seed(), aby uzyskać ten sam wynik. Wiem, że każda liczba całkowita w set.seed() da mi unikalny wynik, a wynik będzie taki sam, jeśli ustawi się ten sam materiał siewny. Ale nie jestem w stanie zrozumieć, co ta liczba całkowita, która jest przekazywana jako parametr do funkcji funkcji set.seed(). Czy jest to tylko indeks, który trafia do algorytmu generatora losowego, czy też oznacza jakąś część danych, od których zaczynasz próbkowanie? Na przykład, co oznacza 2 w set.seed(2)?Co oznacza liczba całkowita podczas ustawiania wielkości początkowej?

Odpowiedz

6

Losowy materiał siewny (lub stan nasion, lub po prostu nasiono) to liczba (lub wektor) użyta do zainicjowania generatora liczb pseudolosowych.

Dla nasienia, które ma być używane w generatorze liczb pseudolosowych, nie musi być losowe. Ze względu na naturę algorytmów generujących liczby, dopóki pierwotny materiał siewny jest ignorowany, pozostałe wartości generowane przez algorytm będą podążać za rozkładem prawdopodobieństwa w sposób pseudolosowy.

- wikipedia

Więc funkcja losowa może być realizowany tak:

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

(próbka pobrana od glibc)

+0

Rozumiem. Jest to parametr podobny do generatora liczb pseudo losowych, który zwraca liczbę lub serię lub liczby wygenerowane przez algorytm. –

+0

dokładnie. ponadto można obliczyć dowolną liczbę "losową". dobre i krótkie informacje można znaleźć tutaj [link] (http://www.mathstat.dal.ca/~selinger/random). również upewnij się, że wywołujesz funkcję seed tylko raz lub możesz mieć tę samą serię liczb losowych (przynajmniej w C). – kometonja

4

Jest to tylko liczba używana do ustawiania nasion generatora liczb losowych. Nie ma to nic wspólnego z Twoimi danymi. Jeśli nie zostanie jawnie dostarczony materiał siewny, nowy zostanie utworzony od bieżącego czasu.

Zobacz stronę pomocy ?set.seed zawierającą wiele szczegółowych informacji.

15

W dawnych czasach nie było książek, które zawierały pages and pages of random digits (oczywiście w przypadkowej kolejności).

Lubię myśleć o set.seed(x), jak powiedzieć komputerowi, aby rozpocząć czytanie liczb losowych od strony x w ogromnej książce liczb losowych. x nie ma nic wspólnego z danymi, ale jak powinien rozpocząć się algorytm wybierania liczb losowych.

To może być trochę łatwe, ale podoba mi się analogia.

Powiązane problemy