2011-12-19 16 views
7

Dokumentacja Array#sample twierdzi, że może brać rng:Jak używać składni # próbki (n, losowe: rng)?

Jeśli RNG jest podana, zostanie użyty jako generator liczb losowych.

W jaki sposób zakres może funkcjonować jako generator liczb losowych lub dlaczego jest przydatny?

Również formularz skrótu sugeruje, że są inne opcje, ale nie mogę znaleźć niczego na ich temat. Wypróbowanie [1,2,3,4,5].sample(3) zachowuje się podobnie jak [1,2,3,4,5].sample(3, random: 1..2).

+0

Przypuszczam można użyć generator liczb losowych mogą być wykorzystane jako dodatkowe źródło dla liczb losowych (jak urządzenie sprzętowe), które może zapewnić lepszą entropię niż wbudowany RNG Ruby. – Koraktor

+0

"Generator liczb losowych (RNG) jest urządzeniem obliczeniowym lub fizycznym zaprojektowanym do generowania sekwencji liczb lub symboli, które nie mają żadnego wzorca, tj. Są przypadkowe." http://pl.wikipedia.org/wiki/Random_number_generation –

+0

Mam ten sam błąd ... Nadal nie rozumiem, jaki jest cel drugiego opcjonalnego argumentu z metodą # # sample. Jeśli teraz masz się dobrze, czy powiedziałbyś mi, że przypadek ten jest korzystny? –

Odpowiedz

8

Argumentem powinien być generator liczb losowych (RNG).

Jeśli nie zostanie podany, domyślnie jest to "czasowa" implementacja Rubiego.

To może być zastąpiony dowolnym RNG, jak jeden, który nie jest wcale przypadkowy:

class NotAtAllRandom 
    def self.rand(x=0) 
    0 
    end 
end 

> (1..10000).sample(3, random: NotAtAllRandom) 
=> [1, 2, 3] 
> (1..10000).sample(3, random: NotAtAllRandom) 
=> [1, 2, 3] 
+0

Niewłaściwe odczytywanie rng dla zakresu zamiast generatora liczb losowych, wypróbowane, nie miało sensu. Oczyściłeś to, dzięki. – steenslag

+0

@steenslag Sądzę, że to trochę wygląda jak zakres - duh; nawet tego nie widziałem. –

+0

"Nie jestem pewien, dlaczego uważasz, że to zasięg.": ''Range'.tr (' aeiou ',' ') ==' rng''. –

Powiązane problemy