|
��������
drand48, erand48, lrand48, nrand48, mrand48, jrand48,
srand48, seed48, lcong48 - ��������� ���������� �������������� ��������������� �����
���������
double drand48 ( ) double erand48 (xsubi) unsigned short xsubi [3]; long lrand48 ( ) long nrand48 (xsubi) unsigned short xsubi [3]; long mrand48 ( ) long jrand48 (xsubi) unsigned short xsubi [3]; void srand48 (seedval) long seedval; unsigned short *seed48 (seed16v) unsigned short seed16v [3]; void lcong48 (param) unsigned short param [7];
��������
������ ��������� ������� ��������� ��������������� ����� � �������������� ������ ���������� ��������� ������������� ��������� � 48-������ ����� ����������.
������� drand48 � erand48 ���������� ��������������� ������������ ����� ������� ��������, ���������� �������������� � ��������� [0.0, 1.0).
������� lrand48 � nrand48 ���������� ��������������� ����� ����� ���� long, ���������� �������������� � ��������� [0, 2^31).
������� mrand48 � jrand48 ���������� ����� ����� �� ������, ���� long, ���������� �������������� � ��������� [-2^31, 2^31).
������� srand48, seed48 � lcong48 ������������ ����� ���������������� ����� �����, ��������� � ������� ������ �������������� ������ �����-���� �� ������� drand48, lrand48, mrand48. (���� ��� � �� �������������, � ��� ������, ����� ������� drand48, lrand48, mrand48 ����� ������� ��� ���������������� ��������� � ���������������� ������ �����, ����������� ���������� ��������� ��������, ����������� �� ���������, ����� ����������� �������������.) ������� erand48, nrand48 � jrand48 �� ������� ���������������� ��������� � ���������������� ������ �����.
��� ��������� ��������, �������� ������������������ 48-������ ����� �������� X [i] � ������������ � �������� ������������ ��������
X [n+1] = (a * X [n] + c) mod m n 0
�������� m = 2^48 � ������� ������������ 48-������ ����� ����������. ���� �� ���� ���������������� ��������� � lcong48, ��� ������������ a � ���������� ��������� c ����� ������� ��������� ��������:
a = 0x5DEECE66D = 0273673163155 c = 0xB = 013
������ ������ ���������� ������������� �������� ��� ����� �� ������� drand48, erand48, lrand48, nrand48, mrand48 ��� jrand48 �������� ��������� ���������� 48 ������� �������� X[i]. ����� �� ���� ������� ������� ���� � ����������, ������������ ����� ���������� �������, ������� � ������������� � ������������ ��������.
������� drand48, lrand48 � mrand48 ��������� ��������� ��������������� 48-������ �������� X[i] �� ���������� ������ - ��� ������ ��� ������ ���� ���������������� ����� ����� �������. ��� ������� �� erand48, nrand48 � jrand48 ���������� ��������� ������ ���� ������������� ������ ��� ��������� �������� X[i], ������������ ��� ������ ��� ��������. ��� ������� ������������� �� �������; ���������� ��������� ������ ������ ��������� �������� ��������� �������� X[i] � ������ �� ���� 16-������ ���� � �������� ��� ��� ��������. ����������� ������������� ��������� ���������� ������� erand48, nrand48 � jrand48 ��������� ��������� ������� ������� ��������� ������������ ��������� ����������� ������� ��������������� �����; ������� �������, ������������������ ����� � ������ ������ �� ������� �� ����, ��� ����� ��������� ���������� ��� ��������� ����� ������ �������.
���������������� ������� srand48 ������������� ������� 32 ���� �������� X[i] ������� 32-� ����� ������ ���������. ���������� �� �������� ������� ���, ������� 16 ��� X[i] ��������������� ������� 0x330E.
���������������� ������� seed48 ������������� �������� ���� 48 ��� X[i] �� �������� ��������� - ������� �� ���� 16-������ ����. ���������� �������� X[i] ���������� � 48-������ ���������� �����, ������������ ������ �������� seed48. ������������ �������� seed48 �������� ������������ ����� ��������� �� ���� �����. ������������ ��������� � ����������� ������� ������������, ������ �� ����� ��������� �������� ��� ����������� ��������� � ������ ����� � �������. ��� �����, ��������� ���������, ������� ������� � ��������� ��������� �������� X[i], ������� �����, ��� �����������, ���������� ��� ��������� ������������� � ������� seed48.
���������������� ������� lcong48 ���� ������������ ����������� ������� ��������� �������� X [i], �������� ������������ a � ���������� ��������� c. � �������, ���������� �� ����������, �������� param [0-2] ���������� X [i], �������� param [3-5] - ����������� a �, �������, param [6] - 16-������ ��������� c. ����� ������ lcong48 ������������ "�����������" �������� ������������ a � ��������� c, ��������� ����, ����� ����� ������ ����� ���� �� ������� srand48 ��� seed48.
����������
�������� ����� ������� ��������� ������� ��� ���������
������ ����� ���� ����������� ���� �� �����������, ��
���������� ����������� ������������ �����. � ����� �������� ������� drand48 � erand48 �� ����������; �� �������� ��������� ��� �������:
long irand48 (m) unsigned short m; long krand48 (xsubi, m) unsigned short xsubi [3], m;
������� irand48 � krand48 ���������� ��������������� ����� ����� ���� long, ���������� �������������� � ��������� [0, m-1].
��. �����
rand(3C).
|