Update of russian help page for grand after commit 596f47efc2c2c9767180674ffbe62232e1...
[scilab.git] / scilab / modules / randlib / help / ru_RU / grand.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) Jean-Philippe Chancelier and Bruno Pincon
5  * Copyright (C) 2010-2011 - DIGITEO - Michael Baudin
6  *
7  * This file must be used under the terms of the CeCILL.
8  * This source file is licensed as described in the file COPYING, which
9  * you should have received as part of this distribution.  The terms
10  * are also available at
11  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
12  *
13  -->
14 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"  xml:lang="ru" xml:id="grand">
15     <refnamediv>
16         <refname>grand</refname>
17         <refpurpose>Случайные числа</refpurpose>
18     </refnamediv>
19     <refsynopsisdiv>
20         <title>Последовательность вызова</title>
21         <synopsis>
22             Y = grand(m, n, "bet", A, B)
23             Y = grand(m, n, "bin", N, p)
24             Y = grand(m, n, "nbn", N, p)
25             Y = grand(m, n, "chi", Df)
26             Y = grand(m, n, "nch", Df, Xnon)
27             Y = grand(m, n, "exp", Av)
28             Y = grand(m, n, "f", Dfn, Dfd)
29             Y = grand(m, n, "nf", Dfn, Dfd, Xnon)
30             Y = grand(m, n, "gam", shape, rate)
31             Y = grand(m, n, "nor", Av, Sd)
32             Y = grand(m, n, "geom", p)
33             Y = grand(m, n, "poi", mu)
34             Y = grand(m, n, "def")
35             Y = grand(m, n, "unf", Low, High)
36             Y = grand(m, n, "uin", Low, High)
37             Y = grand(m, n, "lgi")
38
39             Y = grand(X, ...)
40
41             Y = grand(n,  "mn", Mean, Cov)
42             Y = grand(n,  "markov", P, x0)
43             Y = grand(n,  "mul", nb, P)
44             Y = grand(n,  "prm", vect)
45
46             S = grand("getgen")
47             grand("setgen", gen)
48
49             S = grand("getsd")
50             grand("setsd", S)
51
52             S = grand("phr2sd", phrase)
53
54             grand("setcgn", G)
55             S = grand("getcgn")
56
57             grand("initgn", I)
58
59             grand("setall", s1, s2, s3, s4)
60
61             grand("advnst", K)
62         </synopsis>
63     </refsynopsisdiv>
64     <refsection>
65         <title>Аргументы</title>
66         <variablelist>
67             <varlistentry>
68                 <term>m, n</term>
69                 <listitem>
70                     <para>
71                         целые числа, определяющие размеры матрицы <varname>Y</varname>.
72                     </para>
73                 </listitem>
74             </varlistentry>
75             <varlistentry>
76                 <term>X</term>
77                 <listitem>
78                     <para>
79                         матрица, у которой используются только её размеры (скажем <varname>m</varname> на <varname>n</varname>).
80                     </para>
81                 </listitem>
82             </varlistentry>
83             <varlistentry>
84                 <term>Y</term>
85                 <listitem>
86                     <para>
87                         матрица размером <varname>m</varname> на <varname>n</varname>, элементы которой являются случайными числами двойной точности (double).
88                     </para>
89                 </listitem>
90             </varlistentry>
91             <varlistentry>
92                 <term>S</term>
93                 <listitem>
94                     <para>
95                         выходное значение действия (строка или вещественный вектор-столбец).
96                     </para>
97                 </listitem>
98             </varlistentry>
99         </variablelist>
100     </refsection>
101     <refsection>
102         <title>Описание</title>
103         <para>
104             Эта функция формирует случайные числа по различным законам
105             распределения.
106         </para>
107         <para>
108             Последовательности вызова:
109         </para>
110         <para>
111             <programlisting role="no-scilab-exec"><![CDATA[
112                 Y = grand(m, n, "bet", A, B)
113                 Y = grand(m, n, "bin", N, p)
114                 Y = grand(m, n, "nbn", N, p)
115                 Y = grand(m, n, "chi", Df)
116                 Y = grand(m, n, "nch", Df, Xnon)
117                 Y = grand(m, n, "exp", Av)
118                 Y = grand(m, n, "f", Dfn, Dfd)
119                 Y = grand(m, n, "nf", Dfn, Dfd, Xnon)
120                 Y = grand(m, n, "gam", shape, rate)
121                 Y = grand(m, n, "nor", Av, Sd)
122                 Y = grand(m, n, "geom", p)
123                 Y = grand(m, n, "poi", mu)
124                 Y = grand(m, n, "def")
125                 Y = grand(m, n, "unf", Low, High)
126                 Y = grand(m, n, "uin", Low, High)
127                 Y = grand(m, n, "lgi")
128              ]]></programlisting>
129         </para>
130         <para>
131             формируют матрицу размером <varname>m</varname> на <varname>n</varname>,
132             элементы которой являются случайными числами.
133         </para>
134         <para>
135             Последовательность вызова:
136         </para>
137         <para>
138             <programlisting role="no-scilab-exec"><![CDATA[
139                 Y = grand(X, ...)
140             ]]></programlisting>
141         </para>
142         <para>
143             где <varname>X</varname> - матрица размером <varname>m</varname> на
144             <varname>n</varname>, производит тот же эффект. В данном случае используются
145             только размеры матрицы <varname>X</varname>.
146         </para>
147         <para>
148             Последовательности вызова:
149         </para>
150         <programlisting role="no-scilab-exec"><![CDATA[
151             Y = grand(n, "mn", Mean, Cov)
152             Y = grand(n, "markov", P, x0)
153             Y = grand(n, "mul", nb, P)
154             Y = grand(n, "prm", vect)
155         ]]></programlisting>
156         <para>
157             формируют матрицу размером <varname>m</varname> на <varname>n</varname> со
158             случайными элементами, где <varname>m</varname> - размер аргумента
159             <varname>Mean</varname>, <varname>Cov</varname>, <varname>P</varname> или
160             <varname>vect</varname> в зависимости от ситуации (подробности ниже).
161         </para>
162         <para>
163             Последовательности вызова:
164         </para>
165         <programlisting role="no-scilab-exec"><![CDATA[
166             S = grand("getgen")
167             grand("setgen", gen)
168
169             S = grand("getsd")
170             grand("setsd", S)
171
172             grand("setcgn", G)
173             S = grand("getcgn")
174
175             grand("initgn", I)
176
177             grand("setall", s1, s2, s3, s4)
178
179             grand("advnst", K)
180         ]]></programlisting>
181         <para>
182             настраивают или запрашивают состояние имеющихся генераторов случайных чисел.
183         </para>
184     </refsection>
185     <refsection>
186         <title>Получение случайных чисел по заданному закону распределения</title>
187         <variablelist>
188             <varlistentry>
189                 <term>бета-распределение</term>
190                 <listitem>
191                     <para>
192                         <code>Y = grand(m, n, "bet", A, B)</code> формирует случайные
193                         реализации по бета-распределению с параметрами
194                         <varname>A</varname> и <varname>B</varname>.  Плотность бета-распределения лежит на интервале <latex><![CDATA[(0 < x < 1)]]></latex>:
195                     </para>
196                     <para>
197                         <latex>
198                             \dfrac{x^{A-1}(1-x)^{B-1}}{\beta(A,B)}
199                         </latex>
200                     </para>
201                     <para>
202                         <varname>A</varname> и <varname>B</varname> должны быть вещественными числами <latex><![CDATA[>10^{-37}]]></latex>. С этой функцией связана
203                         функция <link linkend="cdfbet">cdfbet</link>.
204                     </para>
205                 </listitem>
206             </varlistentry>
207             <varlistentry>
208                 <term>биномиальное распределение</term>
209                 <listitem>
210                     <para>
211                         <code>Y = grand(m, n, "bin", N, p)</code> формирует случайные реализации по биномиальному закону распределения с параметрами
212                         <varname>N</varname> (положительное целое) и <varname>p</varname> (вещественное число на интервале <literal>[0,1]</literal>): число
213                         "успехов" в серии из <varname>N</varname> независимых случайных (распределение Бернулли) экспериментов с вероятностью "успеха" в
214                         каждом из них <varname>p</varname>. С этой функцией связаны
215                         функции: <link linkend="binomial">binomial</link>, <link linkend="cdfbin">cdfbin</link>.
216                     </para>
217                 </listitem>
218             </varlistentry>
219             <varlistentry>
220                 <term>отрицательное биномиальное распределение</term>
221                 <listitem>
222                     <para>
223                         <code>Y = grand(m, n, "nbn", N, p)</code>  формирует случайные реализации по отрицательному биномиальному распределению с
224                         параметрами  <varname>N</varname> (положительное целое) и <varname>p</varname> (вещественное число на интервале
225                         <literal>(0,1)</literal>): число "неудач" случившихся до  <varname>N</varname>-го "успеха" в последовательности испытаний с
226                         вероятностью "успеха" <varname>p</varname>. С этой функцией
227                         связана функция <link linkend="cdfnbn">cdfnbn</link>.
228                     </para>
229                 </listitem>
230             </varlistentry>
231             <varlistentry>
232                 <term>хи-квадрат распределение</term>
233                 <listitem>
234                     <para>
235                         <code>Y = grand(m, n, "chi", Df)</code> формирует случайные
236                         реализации по распределению хи-квадрат с <varname>Df</varname>
237                         степенями свободы. Число степеней свободы должно быть
238                         вещественным, строго больше нуля. С этой функцией связана функция: <link linkend="cdfchi">cdfchi</link>.
239                     </para>
240                 </listitem>
241             </varlistentry>
242             <varlistentry>
243                 <term>нецентральное хи-квадрат распределение</term>
244                 <listitem>
245                     <para>
246                         <code>Y = grand(m, n, "nch", Df, Xnonc)</code>  формирует случайные реализации по нецентральному хи-квадрат распределению с
247                         <varname>Df</varname>  степенями свободы (вещественное значение &gt;= <literal>1.0</literal>) и параметром нецентральности
248                         <varname>Xnonc</varname> (вещественное число, больше либо равно
249                         нулю). С этой функцией связана функция: <link linkend="cdfchn">cdfchn</link>.
250                     </para>
251                 </listitem>
252             </varlistentry>
253             <varlistentry>
254                 <term>экспоненциальное распределение</term>
255                 <listitem>
256                     <para>
257                         <code>Y = grand(m, n, "exp", Av)</code> формирует случайные реализации по экспоненциальному распределению с математическим
258                         ожиданием <varname>Av</varname> (вещественное значение, строго больше нуля).
259                     </para>
260                 </listitem>
261             </varlistentry>
262             <varlistentry>
263                 <term>F-распределение (отношение дисперсий, распределение Фишера)</term>
264                 <listitem>
265                     <para>
266                         <code>Y = grand(m, n, "f", Dfn, Dfd)</code> формирует случайные реализации по F-распределению (отношение дисперсий, распределение
267                         Фишера) с <varname>Dfn</varname> (вещественное значение, строго больше нуля) в числителе и <varname>Dfd</varname> степенями
268                         свободы (вещественное значение, строго больше нуля) в знаменателе.
269                         С этой функцией связана функция: <link linkend="cdff">cdff</link>.
270                     </para>
271                 </listitem>
272             </varlistentry>
273             <varlistentry>
274                 <term>нецентральное F-распределение (отношение дисперсий)</term>
275                 <listitem>
276                     <para>
277                         <code>Y = grand(m, n, "nf", Dfn, Dfd, Xnonc)</code> формирует случайные реализации по нецентральному F-распределению (отношению
278                         дисперсий) с <varname>Dfn</varname> степенями свободы (вещественное значение, больше либо равно <literal>1</literal>)  в
279                         числителе, и <varname>Dfd</varname> степенями свободы (вещественное значение, строго больше нуля) в знаменателе и
280                         параметром нецентральности <varname>Xnonc</varname> (вещественное число, больше либо равно нулю). С этой функцией связана функция:
281                         <link linkend="cdffnc">cdffnc</link>.
282                     </para>
283                 </listitem>
284             </varlistentry>
285             <varlistentry>
286                 <term>гамма-распределение</term>
287                 <listitem>
288                     <para>
289                         <code>Y = grand(m, n, "gam", shape, rate)</code> формирует
290                         случайные реализации по гамма-распределению с параметрами
291                         <varname>shape</varname> (вещественное значение, строго
292                         больше нуля) и <varname>rate</varname> (вещественное
293                         значение, строго больше нуля) (<literal>real</literal>
294                         &gt; <literal>0</literal>). Плотность гамма-распределения
295                         равна:
296                     </para>
297                     <para>
298                         <latex>
299                             \dfrac{ \textrm{rate}^{\textrm{shape}} x^{\textrm{shape}-1} e^{-\textrm{rate} x}}{\gamma(\textrm{shape}) }
300                         </latex>
301                     </para>
302                     <para>
303                         С этой функцией связаны: <link linkend="gamma">gamma</link>,
304                         <link linkend="cdfgam">cdfgam</link>.
305                     </para>
306                 </listitem>
307             </varlistentry>
308             <varlistentry>
309                 <term>распределение Гаусса-Лапласа (нормальное)</term>
310                 <listitem>
311                     <para>
312                         <code>Y = grand(m, n, "nor", Av, Sd)</code> формирует случайные реализации по нормальному распределению с математическим ожиданием
313                         <varname>Av</varname>  (вещественное значение), среднеквадратичным отклонением  <varname>Sd</varname> (вещественное значение, больше
314                         либо равно нулю). С этой функцией связана: <link linkend="cdfnor">cdfnor</link>.
315                     </para>
316                 </listitem>
317             </varlistentry>
318             <varlistentry>
319                 <term>многомерное гауссовское (многомерное нормальное) распределение</term>
320                 <listitem>
321                     <para>
322                         <code>Y = grand(n, "mn", Mean, Cov)</code> формирует случайные реализации по многомерному гауссовскому распределению; среднее
323                         значение <varname>Mean</varname> должно быть вектор-столбцом размером <literal>m</literal> на <literal>1</literal>, а
324                         ковариация <varname>Cov</varname> должна быть симметричной положительно определённой матрицей размером <literal>m</literal>
325                         на <literal>m</literal> (тогда <varname>Y</varname> будет матрицей размером <literal>m</literal> на  <literal>n</literal>).
326                     </para>
327                 </listitem>
328             </varlistentry>
329             <varlistentry>
330                 <term>геометрическое распределение</term>
331                 <listitem>
332                     <para>
333                         <code>Y = grand(m, n, "geom", p)</code>  формирует случайные реализации по геометрическому распределению с параметром
334                         <varname>p</varname>: количество независимых экспериментов (с вероятностью "успеха" <varname>p</varname>) до тех пор пока не
335                         будет "успех". Вероятность  <varname>p</varname> должна быть в интервале <latex>[p_{min},1]</latex> (с <latex> p_{min} = 1{,}3\times 10^{-307} </latex>).
336                     </para>
337                     <para>
338                         <varname>Y</varname>  состоит из положительных целочисленных вещественных чисел, которые означают "число экспериментов,
339                         проведённых до первого успешного".
340                     </para>
341                 </listitem>
342             </varlistentry>
343             <varlistentry>
344                 <term>цепь Маркова</term>
345                 <listitem>
346                     <para>
347                         <code>Y = grand(n, "markov", P, x0)</code> формирует <varname>n</varname> последовательных состояний цепи Маркова,
348                         описанных матрицей переходных состояний <varname>P</varname>. Сумма элементов в каждой строке в <varname>P</varname> равна
349                         <literal>1</literal>. Исходное состояние задаётся через <varname>x0</varname>. Если <varname>x0</varname> является
350                         матрицей размером <code>m=size(x0,"*")</code>, то <varname>Y</varname> является матрицей размером
351                         <varname>m</varname> на <varname>n</varname>.  <code>Y(i,:)</code> является выборочной траекторией, полученной из исходного состояния
352                         <code>x0(i)</code>.
353                     </para>
354                 </listitem>
355             </varlistentry>
356             <varlistentry>
357                 <term>мультиномиальное (полиномиальное) распределение</term>
358                 <listitem>
359                     <para>
360                         <code>Y = grand(n, "mul", nb, P)</code>  формирует <varname>n</varname> случайных реализаций по мультиномиальному
361                         распределению: совокупность <varname>nb</varname> событий в <literal>m</literal> категориях (положить <varname>nb</varname>
362                         "шаров" в <literal>m</literal> "ящиков"). <literal>P(i)</literal> является вероятностью того, что событие будет классифицировано в
363                         категории <literal>i</literal>. Вектор-столбец вероятностей <varname>P</varname> размером <literal>m-1</literal> (вероятность
364                         категории <literal>m</literal> равна <literal>1-sum(P)</literal>). <varname>Y</varname>  имеет размер <literal>m</literal> на
365                         <literal>n</literal>. Каждый столбец <literal>Y(:,j)</literal> является случайной реализацией по мультиномиальному распределению,
366                         а <literal>Y(i,j)</literal> является  количеством событий, попавших в категорию <literal>i</literal> (для
367                         <literal>j</literal>-того наблюдения) (<literal>sum(Y(:,j)) = nb</literal>).
368                     </para>
369                 </listitem>
370             </varlistentry>
371             <varlistentry>
372                 <term>распределение Пуассона</term>
373                 <listitem>
374                     <para>
375                         <code>Y = grand(m, n, "poi", mu)</code> формирует случайные
376                         реализации по распределению Пуассона с математическим ожиданием <varname>mu</varname> (вещественное значение, больше либо равно
377                         нулю). С этой функцией связана: <link linkend="cdfpoi">cdfpoi</link>.
378                     </para>
379                 </listitem>
380             </varlistentry>
381             <varlistentry>
382                 <term>случайные перестановки</term>
383                 <listitem>
384                     <para>
385                         <code>Y = grand(n, "prm", vect)</code> формирует <varname>n</varname> случайных перестановок вектора-столбца
386                         <varname>vect</varname> размером <literal>m</literal> на <literal>1</literal>.
387                     </para>
388                 </listitem>
389             </varlistentry>
390             <varlistentry>
391                 <term>непрерывное равномерное распределение (def)</term>
392                 <listitem>
393                     <para>
394                         <code>Y = grand(m, n, "def")</code> формирует случайные реализации по равномерному распределению на интервале
395                         <literal>[0,1)</literal> (<literal>1</literal>  в интервал не входит).
396                     </para>
397                 </listitem>
398             </varlistentry>
399             <varlistentry>
400                 <term>непрерывное равномерное распределение (unf)</term>
401                 <listitem>
402                     <para>
403                         <code>Y = grand(m, n, "unf", Low, High)</code> формирует случайные вещественные значения равномерно распределённые на интервале
404                         <literal>[Low, High)</literal> (<varname>High</varname> в интервал не входит).
405                     </para>
406                 </listitem>
407             </varlistentry>
408             <varlistentry>
409                 <term>дискретное равномерное распределение (uin)</term>
410                 <listitem>
411                     <para>
412                         <code>Y = grand(m, n, "uin", Low, High)</code> формирует случайные целые числа, равномерно распределённые между значениями
413                         <varname>Low</varname> и <varname>High</varname> (включительно). <varname>High</varname> и <varname>Low</varname> должны быть
414                         такими целыми числами, что <latex><![CDATA[(\textrm{High}-\textrm{Low}+1) < 2\,147\,483\,561]]></latex>.
415                     </para>
416                 </listitem>
417             </varlistentry>
418             <varlistentry>
419                 <term>равномерное распределение (lgi)</term>
420                 <listitem>
421                     <para>
422                         <code>Y = grand(m, n, "lgi")</code> возвращает базовый выход текущего генератора: случайные целые числа по равномерному
423                         распределению на интервалах:
424                     </para>
425                     <itemizedlist>
426                         <listitem>
427                             <para>
428                                 <literal>[0, 2^32 - 1]</literal>  для mt, kiss и fsultra;
429                             </para>
430                         </listitem>
431                         <listitem>
432                             <para>
433                                 <literal>[0, 2^31 - 87]</literal> для clcg2;
434                             </para>
435                         </listitem>
436                         <listitem>
437                             <para>
438                                 <literal>[0, 2^31 - 2]</literal> для clcg4;
439                             </para>
440                         </listitem>
441                         <listitem>
442                             <para>
443                                 <literal>[0, 2^31 - 1]</literal> для urand.
444                             </para>
445                         </listitem>
446                     </itemizedlist>
447                 </listitem>
448             </varlistentry>
449         </variablelist>
450     </refsection>
451     <refsection>
452         <title>Установка/получение текущего генератора и его состояния</title>
453         <para>
454             У пользователя есть возможность выбирать между основными генераторами (которые
455             дают случайные целые числа по распределению <literal>"lgi"</literal>, другие
456             получаются из него).
457         </para>
458         <variablelist>
459             <varlistentry>
460                 <term>mt</term>
461                 <listitem>
462                     <para>
463                         Вихрь Марсенна (Mersenne-Twister), разработанный японскими учёными
464                         Макото Мацумото и Такудзи Нисимурой, период около
465                         <literal>2^19937</literal>, состояние задаётся массивом из
466                         <literal>624</literal> целых чисел (плюс индекс на этот массив).
467                         Этот генератор используется по умолчанию.
468                     </para>
469                 </listitem>
470             </varlistentry>
471             <varlistentry>
472                 <term>kiss</term>
473                 <listitem>
474                     <para>
475                         "Keep It Simple Stupid" ("придерживайся простоты"), разработанный
476                         Джорджем Марсальи, период около <literal>2^123</literal>,
477                         состояние задаётся четырьмя целыми числами.
478                     </para>
479                 </listitem>
480             </varlistentry>
481             <varlistentry>
482                 <term>clcg2</term>
483                 <listitem>
484                     <para>
485                         Комбинация двух линейных конгруэнтных генераторов П. Л'Экюйера (P. L'Ecuyer) с периодом около <literal>2^61</literal>, состояние
486                         задаётся двумя целыми числами.
487                     </para>
488                 </listitem>
489             </varlistentry>
490             <varlistentry>
491                 <term>clcg4</term>
492                 <listitem>
493                     <para>
494                         Комбинация четырёх линейных конгруэнтных генераторов П. Л'Экюйера
495                         (P. L'Ecuyer)  с периодом около <literal>2^121</literal>, состояние
496                         задаётся четырьмя целыми числами. Этот генератор разделён на разные
497                         виртуальные (неперекрывающиеся) генераторы (<literal>101</literal>
498                         генератор), которые могут быть полезными для разных задач (см.
499                         "Опции, специфичные для "clcg4"" и "Тестовый пример для "clcg4"").
500                     </para>
501                 </listitem>
502             </varlistentry>
503             <varlistentry>
504                 <term>fsultra</term>
505                 <listitem>
506                     <para>
507                         Генератор вычитания с займом (Subtract-with-Borrow), смешанный с
508                         конгруэнтным генератором Арифа Замана (Arif Zaman) и Джорджа
509                         Марсальи (George Marsaglia), с периодом свыше
510                         <literal>10^356</literal>, состояние задаётся массивом из
511                         <literal>37</literal> целых чисел (плюс индекс на этот массив,
512                         флаг (<literal>0</literal> или <literal>1</literal>) и другое
513                         целое число).
514                     </para>
515                 </listitem>
516             </varlistentry>
517             <varlistentry>
518                 <term>urand</term>
519                 <listitem>
520                     <para>
521                         Генератор, используемый функцией Scilab'а <link linkend="rand">rand</link>, состояние задаётся одним целым числом,
522                         период <literal>2^31</literal>. Этот генератор основан на "Urand,
523                         A Universal Random Number Generator" By, Michael A. Malcolm, Cleve
524                         B. Moler, Stan-Cs-73-334, January 1973, Computer Science
525                         Department, School Of Humanities And Sciences, Stanford
526                         University. Это самый быстрый генератор из данного списка, однако
527                         его статистические качества менее удовлетворительны по сравнению с
528                         другими генераторами.
529                     </para>
530                 </listitem>
531             </varlistentry>
532         </variablelist>
533         <para>
534             Различные действия, общие для всех генераторов:
535         </para>
536         <variablelist>
537             <varlistentry>
538                 <term>действие = "getgen"</term>
539                 <listitem>
540                     <para>
541                         <code>S = grand("getgen")</code> возвращает текущий основной
542                         генератор. В данном случае <varname>S</varname> является одной
543                         строкой из <literal>"mt"</literal>, <literal>"kiss"</literal>,
544                         <literal>"clcg2"</literal>, <literal>"clcg4"</literal>,
545                         <literal>"urand"</literal>, <literal>"fsultra"</literal>.
546                     </para>
547                 </listitem>
548             </varlistentry>
549             <varlistentry>
550                 <term>действие = "setgen"</term>
551                 <listitem>
552                     <para>
553                         <code>grand("setgen",gen)</code> устанавливает текущий основной
554                         генератор. В данном случае <varname>gen</varname> может быть одной
555                         строкой из <literal>"mt"</literal>, <literal>"kiss"</literal>,
556                         <literal>"clcg2"</literal>, <literal>"clcg4"</literal>,
557                         <literal>"urand"</literal>, <literal>"fsultra"</literal>.
558                         Заметьте, что этот вызов возвращает новый текущий генератор, т.е.
559                         <varname>gen</varname>.
560                     </para>
561                 </listitem>
562             </varlistentry>
563             <varlistentry>
564                 <term>действие = "getsd"</term>
565                 <listitem>
566                     <para>
567                         <code>S = grand("getsd")</code> получает текущее состояние
568                         (текущие семена) текущего основного генератора.
569                         <varname>S</varname> задаётся в виде вектор-столбца (целочисленных
570                         значений) с количеством элементов <literal>625</literal> для
571                         <literal>"mt"</literal> (первое значение является индексом в
572                         интервале <literal>[1,624]</literal>),  <literal>4</literal> для
573                         <literal>"kiss"</literal>,  <literal>2</literal> для
574                         <literal>"clcg2"</literal>, <literal>40</literal> для
575                         <literal>"fsultra"</literal>,  <literal>4</literal> для
576                         <literal>"clcg4"</literal> (для последнего вы получите текущее
577                         состояние текущего виртуального генератора) и
578                         <literal>1</literal> для <literal>"urand"</literal>.
579                     </para>
580                 </listitem>
581             </varlistentry>
582             <varlistentry>
583                 <term>действие = "setsd"</term>
584                 <listitem>
585                     <para>
586                         <code>grand("setsd", S)</code> и <code>grand("setsd", s1[, s2, s3, s4])</code>  устанавливают состояние текущего основного генератора
587                         (несколько семян):
588                     </para>
589                     <variablelist>
590                         <varlistentry>
591                             <term>для mt</term>
592                             <listitem>
593                                 <para>
594                                     <varname>S</varname>является вектор-столбцом целых чисел с количеством элементов <literal>625</literal>
595                                     (значение первого элемента вектора является индексом и должно быть в интервале <literal>[1,624]</literal>, а
596                                     значения остальных <literal>624</literal> элементов должны лежать в интервале
597                                     <literal>[0,2^32)</literal>), но не должны быть все нулями); более простая инициализация может быть
598                                     сделана с помощью только одного целого числа <varname>s1</varname> (<varname>s1</varname> должно
599                                     лежать в интервале <literal>[0,2^32)</literal>);
600                                 </para>
601                             </listitem>
602                         </varlistentry>
603                         <varlistentry>
604                             <term>для kiss</term>
605                             <listitem>
606                                 <para>
607                                     должны быть указаны четыре целых числа <varname>s1</varname>, <varname>s2</varname>,
608                                     <varname>s3</varname>, <varname>s4</varname> на интервале <literal>[0,2^32)</literal>;
609                                 </para>
610                             </listitem>
611                         </varlistentry>
612                         <varlistentry>
613                             <term>для clcg2</term>
614                             <listitem>
615                                 <para>
616                                     должны быть указаны два целых числа <varname>s1</varname> на интервале
617                                     <literal>[1,2^31-86]</literal> и <varname>s2</varname> на интервале  <literal>[1,2^31-250]</literal>;
618                                 </para>
619                             </listitem>
620                         </varlistentry>
621                         <varlistentry>
622                             <term>для clcg4</term>
623                             <listitem>
624                                 <para>
625                                     требуются четыре целых числа <varname>s1</varname> на
626                                     интервале <literal>[1,2^31-2]</literal>, <varname>s2</varname> на интервале <literal>[1,2^31-106]</literal>, <varname>s3</varname>
627                                     на интервале <literal>[1,2^31-226]</literal>, <varname>s4</varname> на интервале
628                                     <literal>[1,2^31-326]</literal>;
629                                 </para>
630                                 <para>
631                                     <caution>
632                                         Предостережение: с clcg4 вы устанавливаете семена текущего виртуального генератора, но вы можете
633                                         потерять синхронизацию между ним и другими виртуальными генераторами (т.е. не гарантируется,
634                                         что генерируемая последовательность не перекрывается с генерируемой последовательностью
635                                         другого  виртуального генератора) =&gt; вместо этого используйте опцию "setall".
636                                     </caution>
637                                 </para>
638                             </listitem>
639                         </varlistentry>
640                         <varlistentry>
641                             <term>для urand</term>
642                             <listitem>
643                                 <para>
644                                     должно быть указано одно целое число <varname>s1</varname> на интервале <literal>[0,2^31)</literal>.
645                                 </para>
646                             </listitem>
647                         </varlistentry>
648                         <varlistentry>
649                             <term>для fsultra</term>
650                             <listitem>
651                                 <para>
652                                     <varname>S</varname> является вектором целых чисел, состоящий из 40 элементов  (первый элемент является
653                                     индексом и должен быть на интервале <literal>[0,37]</literal>, второй элемент является
654                                     флагом (0 или 1), третий элемент является целым числом на интервале  <literal>[1,2^32[</literal>, а 37
655                                     остальных целых чисел должны быть на интервале <literal>[0,2^32[</literal>. Более простая (и
656                                     рекомендованная) инициализация может быть сделана с помощью двух целых чисел <varname>s1</varname> и
657                                     <varname>s2</varname> на интервале <literal>[0,2^32[</literal>.
658                                 </para>
659                             </listitem>
660                         </varlistentry>
661                     </variablelist>
662                 </listitem>
663             </varlistentry>
664             <varlistentry>
665                 <term>действие = "phr2sd"</term>
666                 <listitem>
667                     <para>
668                         для заданной фразы <varname>phrase</varname> (символьной строки)
669                         <code>Sd = grand("phr2sd", phrase)</code> генерирует вектор
670                         <varname>Sd</varname> размером 1 на 2, который может
671                         использоваться в качестве семени для изменения состояния
672                         основного генератора (изначально подходил для clcg2).
673                     </para>
674                 </listitem>
675             </varlistentry>
676         </variablelist>
677     </refsection>
678     <refsection>
679         <title>Опции, специфичные для clcg4</title>
680         <para>
681             Генератор clcg4 может использоваться как и остальные генераторы, но у него
682             есть то преимущество, что он может быть разделён на несколько
683             (<literal>101</literal>) виртуальных генераторов последовательности которых не
684             перекрываются (когда вы используете классический генератор, то вы можете
685             изменить исходное состояние (семена) для того, чтобы получить другую
686             последовательность, но не гарантируется, что вы получите абсолютно другую
687             последовательность). Каждому виртуальному генератору соответствует
688             последовательность из  <literal>2^72</literal> значений, которая далее делится
689             на <literal>V=2^31</literal> сегментов (или блоков) длиной
690             <literal>W=2^41</literal>. Есть возможность вернуть заданный виртуальный
691             генератор в начало последовательности или в начало текущего сегмента или
692             перейти прямо к следующему сегменту. Можно также изменить исходное состояние
693             (семя) генератора <literal>0</literal> с помощью опции
694             <literal>"setall"</literal>, которая затем изменит также исходное состояние
695             остальных виртуальных генераторов так, чтобы получить синхронизацию, т.е. в
696             функции нескольких исходных состояний генератора <literal>0</literal> исходные
697             состояния генераторов <literal>1...100</literal> пересчитываются так, чтобы
698             получить <literal>101</literal> неперекрывающуюся последовательность.
699         </para>
700         <variablelist>
701             <varlistentry>
702                 <term>действие = "setcgn"</term>
703                 <listitem>
704                     <para>
705                         <code>grand("setcgn",G)</code> устанавливает текущий виртуальный
706                         генератор для clcg4 (когда clcg4 установлен, то есть используется
707                         виртуальный генератор (clcg4) номер  <varname>G</varname>);
708                         виртуальные генераторы clcg4 пронумерованы <literal>0, 1, ..., 100</literal> (а поэтому <varname>G</varname> должно быть целым
709                         числом на интервале <literal>[0,100]</literal>); по умолчанию
710                         текущим виртуальным генератором является <literal>0</literal>.
711                     </para>
712                 </listitem>
713             </varlistentry>
714             <varlistentry>
715                 <term>действие = "getcgn"</term>
716                 <listitem>
717                     <para>
718                         <code>S = grand("getcgn")</code> возвращает номер текущего виртуального генератора clcg4.
719                     </para>
720                 </listitem>
721             </varlistentry>
722             <varlistentry>
723                 <term>действие = "initgn"</term>
724                 <listitem>
725                     <para>
726                         <code>grand("initgn", I)</code> заново инициализирует состояние текущего виртуального генератора.
727                     </para>
728                     <variablelist>
729                         <varlistentry>
730                             <term>I = -1</term>
731                             <listitem>
732                                 <para>
733                                     устанавливает состояние в его исходное семя.
734                                 </para>
735                             </listitem>
736                         </varlistentry>
737                         <varlistentry>
738                             <term>I = 0</term>
739                             <listitem>
740                                 <para>
741                                     устанавливает состояние в его последнее (предыдущее) семя (т. е. в начало текущего сегмента).
742                                 </para>
743                             </listitem>
744                         </varlistentry>
745                         <varlistentry>
746                             <term>I = 1</term>
747                             <listitem>
748                                 <para>
749                                     устанавливает состояние на <literal>W</literal> значений нового семени от его последнего семени (т.е.
750                                     в начало следующего сегмента) и сбрасывает параметры текущего сегмента.
751                                 </para>
752                             </listitem>
753                         </varlistentry>
754                     </variablelist>
755                 </listitem>
756             </varlistentry>
757             <varlistentry>
758                 <term>действие = "setall"</term>
759                 <listitem>
760                     <para>
761                         <code>grand("setall", s1, s2, s3, s4)</code> устанавливает
762                         исходное состояние генератора <literal>0</literal> в
763                         <varname>s1</varname>, <varname>s2</varname>,
764                         <varname>s3</varname>, <varname>s4</varname>. Исходные семена
765                         других генераторов устанавливаются так, чтобы была синхронизация.
766                         Об ограничениях на <varname>s1</varname>, <varname>s2</varname>,
767                         <varname>s3</varname>, <varname>s4</varname> смотри действие
768                         <literal>"setsd"</literal>.
769                     </para>
770                 </listitem>
771             </varlistentry>
772             <varlistentry>
773                 <term>действие = "advnst"</term>
774                 <listitem>
775                     <para>
776                         <code>grand("advnst", K)</code>  перемещает состояние текущего
777                         генератора вперёд на <literal>2^K</literal> значений и сбрасывает
778                         исходное семя в это значение.
779                     </para>
780                 </listitem>
781             </varlistentry>
782         </variablelist>
783     </refsection>
784     <refsection>
785         <title>Примеры</title>
786         <para>
787             В следующем примере мы генерируем случайные числа по различным законам
788             распределения и строим соответствующие гистограммы.
789         </para>
790         <programlisting role="example"><![CDATA[
791 // Возвращает матрицу размером 400 на 800 случайных чисел
792 // по нормальному распределению, с матожиданием 0 и дисперсией 1.
793 R = grand(400,800,"nor",0,1);
794 scf();
795 histplot(10,R);
796 xtitle("Случайные числа по нормальному закону распределения из функции grand","X","Частота");
797 ]]></programlisting>
798         <scilab:image localized="true">
799             R = grand(400,800,"nor",0,1);
800             histplot(10,R);
801             xtitle("Случайные числа по нормальному закону распределения из функции grand","X","Частота");
802         </scilab:image>
803
804         <programlisting role="example"><![CDATA[
805 // Возвращает матрицу размером 400 на 800 случайных чисел
806 // с равномерным распределением в [0,1).
807 R = grand(400,800,"def");
808 scf();
809 histplot(10,R);
810 xtitle("Случайные числа с равномерным распределением из функции grand","X","Частота");
811  ]]></programlisting>
812         <scilab:image localized="true">
813             R = grand(400,800,"def");
814             histplot(10,R);
815             xtitle("Случайные числа с равномерным распределением из функции grand","X","Частота");
816         </scilab:image>
817
818         <programlisting role="example"><![CDATA[
819 // Возвращает матрицу размером 400 на 800 случайных чисел
820 // по распределению Пуассона и матожиданием, равным 5.
821 R = grand(400,800,"poi",5);
822 scf();
823 histplot(10,R);
824 xtitle("Случайные числа по закону распределения Пуассона из grand","X","Частота");
825  ]]></programlisting>
826         <scilab:image localized="true">
827             R = grand(400,800,"poi",5);
828             histplot(10,R);
829             xtitle("Случайные числа по закону распределения Пуассона из grand","X","Частота");
830         </scilab:image>
831
832         <para>
833             В следующем примере мы генерируем случайные числа по экспоненциальному распределению, а затем сравниваем эмпирическое распределение с теоретическим.
834         </para>
835         <programlisting role="example"><![CDATA[
836 lambda=1.6;
837 N=100000;
838 X = grand(1,N,"exp",lambda);
839 scf();
840 classes = linspace(0,12,25);
841 histplot(classes,X)
842 x=linspace(0,12,25);
843 y = (1/lambda)*exp(-(1/lambda)*x);
844 plot(x,y,"ro-");
845 legend(["Эксперимент" "Теория"]);
846 xtitle("Случайные числа по экспоненциальному закону распределения из функции grand","X","Частота");
847  ]]></programlisting>
848         <scilab:image localized="true">
849             lambda=1.6;
850             N=100000;
851             X = grand(1,N,"exp",lambda);
852             classes = linspace(0,12,25);
853             histplot(classes,X)
854             x=linspace(0,12,25);
855             y = (1/lambda)*exp(-(1/lambda)*x);
856             plot(x,y,"ro-");
857             legend(["Эксперимент" "Теория"]);
858             xtitle("Случайные числа по экспоненциальному закону распределения из функции grand","X","Частота");
859         </scilab:image>
860         <para>
861             В следующем примере мы генерируем случайные числа по закону гамма-
862             распределения, а затем сравниваем эмпирическое распределение с теоретическим.
863         </para>
864         <programlisting role="example"><![CDATA[
865 N=10000;
866 A=10;
867 B=4;
868 R=grand(1,N,"gam",A,B);
869 XS=gsort(R,"g","i")';
870 PS=(1:N)'/N;
871 P=cdfgam("PQ",XS,A*ones(XS),B*ones(XS));
872 scf();
873 plot(XS,PS,"b-"); // Эмпирическое распределение
874 plot(XS,P,"r-"); // Теоретическое распределение
875 legend(["Эксперимент" "Теория"]);
876 xtitle("Интегральная функция распределения случайных чисел по закону гамма-распределения","X","F");
877 ]]></programlisting>
878         <scilab:image localized="true">
879             N=10000;
880             A=10;
881             B=4;
882             R=grand(1,N,"gam",A,B);
883             XS=gsort(R,"g","i")';
884             PS=(1:N)'/N;
885             P=cdfgam("PQ",XS,A*ones(XS),B*ones(XS));
886             scf();
887             plot(XS,PS,"b-"); // Эмпирическое распределение
888             plot(XS,P,"r-"); // Теоретическое распределение
889             legend(["Эксперимент" "Теория"]);
890             xtitle("Интегральная функция распределения случайных чисел по закону гамма-распределения","X","F");
891         </scilab:image>
892         <para>
893             В следующем примере мы генерируем 10 случайных целых чисел в интервале
894             <literal>[1,365]</literal>.
895         </para>
896         <programlisting role="example"><![CDATA[
897 grand(10,1,"uin",1,365)
898  ]]></programlisting>
899         <para>
900             В следующем примере мы генерируем <literal>12</literal> перестановок набора
901             чисел <literal>[1, 2, ..., 7]</literal>. Эти <literal>12</literal>
902             перестановок сохраняются столбец за столбцом.
903         </para>
904         <programlisting role="example"><![CDATA[
905 grand(12,"prm",(1:7)')
906  ]]></programlisting>
907     </refsection>
908     <refsection>
909         <title>Получение более или менее предсказуемых чисел</title>
910         <para>
911             Генераторы псевдослучайных чисел основаны на детерминированных
912             последовательностях. Для того, чтобы получить повторное воспроизведение
913             моделирования, исходное семя генератора равно такой константе, что
914             последовательность будет оставаться одной и той же от одной сессии к другой.
915             Следовательно, по умолчанию, первые числа, производимые функцией
916             <function>grand</function>, всегда одни и те же.
917         </para>
918         <para>
919             В некоторых ситуациях мы можем захотеть инициализировать семя генератора для
920             того, чтобы получить менее предсказуемые числа. В этом случае мы можем
921             инициализировать семя с помощью выходного значения функции
922             <function>getdate</function>:
923         </para>
924         <programlisting role="example"><![CDATA[
925 n=getdate("s");
926 grand("setsd",n)
927     ]]></programlisting>
928     </refsection>
929     <refsection>
930         <title>Тестовый пример для clcg4</title>
931         <para>
932             Пример необходимости возможности разделения clcg4 следующий. Сравниваются два
933             статистических метода по данным разного размера. Первый является
934             бутстреп-методом и считается точным при использовании меньшего количества данных,
935             чем второй метод, который использует только грубую силу. Для первого метода будет
936             генерироваться набор данных размером равномерно распределённым между
937             <literal>25</literal> и <literal>50</literal>. Затем будет генерироваться и
938             анализироваться набор данных определённого размера. Второй метод будет
939             выбирать размер набора данных между <literal>100</literal> и
940             <literal>200</literal>, генерировать данные и анализировать их. Этот процесс
941             будет повторяться <literal>1000</literal> раз. Для уменьшения разброса мы
942             хотим, чтобы числа, используемые в этих двух методах были одинаковыми для
943             каждого из <literal>1000</literal> сравнений. Но второй метод будет
944             использовать больше случайных чисел, чем первый метод и без этого пакета
945             синхронизация была бы затруднительна. С clcg4 это легко. Используем генератор
946             <literal>0</literal> для получения размера выборки для метода один и генератор
947             <literal>1</literal> для получения данных. Затем сбрасываем состояние  к
948             начальному текущего блока и делаем то же самое для второго метода. Это
949             гарантирует, что исходные данные для второго метода те же, что использовались
950             в первом методе. Когда они оба закончатся, передвигаем вперёд блок для обоих
951             генераторов.
952         </para>
953     </refsection>
954     <refsection role="see also">
955         <title>Смотрите также</title>
956         <simplelist type="inline">
957             <member>
958                 <link linkend="rand">rand</link>
959             </member>
960             <member>
961                 <link linkend="sprand">sprand</link>
962             </member>
963             <member>
964                 <link linkend="ssrand">ssrand</link>
965             </member>
966         </simplelist>
967     </refsection>
968 </refentry>