Simple pseudo-random generator in Erlang
Erlang Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ebin
src
.gitignore
Makefile
README.md
lab_russian.odt
rebar
start-dev.sh

README.md

Генерация псевдослучайной последовательности

a(k) = (D+(A(k-1))*L) mod N

D, L, N - Аргументы

A(0) - начальный элемент.

Обеспечить генерирование a(k) по возможности, чтоб период был достаточно большим. По заданным D, L, N определить период. Линейна.

Восстановить последовательность. Предложить свой вариант последовательности, в том числе вещественной. Сколько значений нужно найти, чтобы найти D, L, N.

C = 9, B = 3, A = 1

C = (D+(B*L)) mod N
B = (D+(A*L)) mod N

9 = (D+(3*L)) mod N
3 = (D+(1*L)) mod N

9 = (D+(3*L)) 
3 = (D+(1*L)) 

D = 9 - 3*L
3 = 9 - 3*L + 1*L

3 = 9 - 3*L + 1*L

B = C - B*L + A*L
B = C - (B-A) * L
B - C = - (B-A)*L
L = (B-C)/(A-B)
3 = (3-9)/(1-3)
3 = -6/-2


L = (BB-CC)/(AA-BB)
L = ((B+X1*N)-(C+X3*N))/((A+X2*N)-(B+X1*N))

D = C - B*L

K mod N = R
K div N = U
R+U*N = K