Losowanie liczby bez funkcji losującej.

0

Cześć, mam pytanie. Dostałem taska, by wylosować x liczb bez użycia wbudowanych funkcji losujących. Przeszukałem pół internetu, jednak wystarczy tylko wpisać słowo "losowanie" i pierwszych 30 stron będzie o klasie Random :p

Ktoś ma może jakiś pomysł jak losować takie liczby ?

7

To jest zadanie na poważnie do pracy czy do ćwiczeń?
Bo jak na poważnie do pracy to może chodzić o użycie jakiegoś bardziej skomplikowanego generatora dającego lepszy rozkład.
Jak to jest ćwiczenie to pewnie chodzi o samodzielne napisanie generatora. Ogólnie (jeśli dobrze pamiętam to generator liczb pseudolosowoch jest to funkcja która dodaje, mnoży i liczy modulo. Więc dużej magii tam nie ma (w prostych wersjach) trzeba tylko dobrze dobrać wpsółczynniki (idę po książkę)

Znalazłem książkę:
Wybierasz ziarno s, np czas w milisekundach.
Nowa liczba przeudolosowa to (n * s) % m
Nowe ziarno to (a * s + c) % m

Stałe to np a=31413, c=13849, m=65536. Wartości są dobrane dla 16 bitowego pascala więc dla Javy pewnie będą inne :)

0

@KamilAdam: @UglyMan:

Tak Panowie. Chodzi najpewniej o napisanie własnego generatora liczb pseudolosowych. Dzięki za pomoc !

0

Zrób czytanie z /dev/urandom.

0

LCG to 3 linijki kodu ;)

0

Ok. Znalazłem fajne liczby. Są całkiem spore i na przestrzeni 80 000 liczb nie znalazłem żadnej okresowości. Mam pytanie do was. Moje liczby są zawsze z przedziału 0 do X.
Wiecie jak wprowadzić również negatywne liczby do przedziału ?

0
RezyserKinaAkcji napisał(a):

Ok. Znalazłem fajne liczby. Są całkiem spore i na przestrzeni 80 000 liczb nie znalazłem żadnej okresowości. Mam pytanie do was. Moje liczby są zawsze z przedziału 0 do X.

Wiecie jak wprowadzić również negatywne liczby do przedziału ?

val number1 = if (number % 2 == 0) number/2 else -number/2-1

1 użytkowników online, w tym zalogowanych: 0, gości: 1