Jak mam już się wpisywać to na maxa :).
Wiecie może jak napisać instrukcję losującą w asmie ?????
Najprostszą metodą (nie licząc wykorzystywania do tego celu wbudowanych w procesory Intela instrukcji SSE) jest algorytm Lehmer\\\'a. Po angielsku nazwali to Linear Congruenial Method (nie mam pojęcia co to znaczy dosłownie).
Jeżeli mamy tablicę:
a: array [1..n] of JakiśTypLiczbowy;
to:
for i := 2 to n do
a[j] := (a[ j - 1 ]*b+1) mod m;
W ten sposób otrzymujesz liczby pseudolosowe z zakresu
Oczywiście bardzo ważne jest dobrać stałe b i m (zawartość a[1] jest już mniej istotna), żeby otrzymywać liczby w miarę jak najbardziej losowe. Zaleca sie używać dosyć dużych wartości dla m (więcej liczb możliwych do wylosowania), a b powinno zawierać ok. o jedną cyfrę mniej niż m i kończyć się na x21 gdzie x jest liczbą parzystą (różne dziwne rzeczy się zdarzają w innych przypadkach: bardzo często powtarzające się kombinacje).
To oczywiście jeden z najprostrzych algorytmów.
A jak na assemblera to przerobić, to już nie powinno stwarzać większych problemów (jeżeli znasz asm)
--
Jest jeszcze jeden błąd ... :)
Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.
Linear Congruential Method - po polsku metoda kongruencji liniowej. Wspomina o niej Knuth w 2 tomie. Ogólnie to parametry są nie dwa, a trzy:
moduł m;
mnożnik c;
potencjał a;
oraz naturalnie ziarno, czyli X(0)
całość zdefiniowana jest rekurencyjnie:
X(n+1) = (aX(n) + c) mod m
O odpowiednim doborze tych parametrów napisano niejedną książkę, a metoda należy do najbardziej popularnych. Naturalnie wartość ziarna powinna być inicjowana wartością losową taką jak wskazanie zegara systemowego.
Skąd można pobrać ciekawego avatara?
Linear Congruential Method - po polsku metoda kongruencji liniowej.
To mówi mi tyle samo co angielska nazwa :)
mnożnik c;
Dlaczego to nazywa się mnożnik? Ja bym to nazwał składnik. Tu się dodaje.
A jeszcze jest modyfikacja tego "Additive congruential method".
Po prostu zamiast dodawać jakąś stałą c (niech będzie mnożnik) i element poprzedni, to dodaje do siebie jakieś dwie wcześniej wyliczone liczby np. a[n-2]+a[n-4] zamiast a[n-1] - 1.
Skąd można pobrać ciekawego avatara?
Potrzebujesz kapustki? :-)
--
Jest jeszcze jeden błąd ... :)
Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.
A nie lepjej pobierać milisekundy i ew. mnożyć przez sekundy :-)
--
Nieważne czy producent jest z Ameryki czy z Niemiec i tak wszystko jest z Tajwanu