fix trouble in help generation
[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  * Copyright (C) 2013 - Samuel GOUGEON : extension to hypermatrices
7  *
8  * Copyright (C) 2012 - 2016 - Scilab Enterprises
9  *
10  * This file is hereby licensed under the terms of the GNU GPL v2.0,
11  * pursuant to article 5.3.4 of the CeCILL v.2.1.
12  * This file was originally licensed under the terms of the CeCILL v2.1,
13  * and continues to be available under such terms.
14  * For more information, see the COPYING file which you should have received
15  * along with this program.
16  *
17  -->
18 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
19           xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
20           xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
21           xml:lang="ru" xml:id="grand">
22     <refnamediv>
23         <refname>grand</refname>
24         <refpurpose>Случайные числа</refpurpose>
25     </refnamediv>
26     <refsynopsisdiv>
27         <title>Синтаксис</title>
28         <synopsis>
29             Y = grand(m, n, "bet", A, B)
30             Y = grand(m, n, "bin", N, p)
31             Y = grand(m, n, "nbn", N, p)
32             Y = grand(m, n, "chi", Df)
33             Y = grand(m, n, "nch", Df, Xnon)
34             Y = grand(m, n, "exp", Av)
35             Y = grand(m, n, "f", Dfn, Dfd)
36             Y = grand(m, n, "nf", Dfn, Dfd, Xnon)
37             Y = grand(m, n, "gam", shape, rate)
38             Y = grand(m, n, "nor", Av, Sd)
39             Y = grand(m, n, "geom", p)
40             Y = grand(m, n, "poi", mu)
41             Y = grand(m, n, "def")
42             Y = grand(m, n, "unf", Low, High)
43             Y = grand(m, n, "uin", Low, High)
44             Y = grand(m, n, "lgi")
45
46             Y = grand(m, n, o,..,"..",...)
47             Y = grand(X, ...)
48         </synopsis>
49         <para/>
50         <synopsis>
51             Y = grand(n, "mn", Mean, Cov)
52             Y = grand(n, "markov", P, x0)
53             Y = grand(n, "mul", nb, P)
54             Y = grand(n, "prm", vect)
55         </synopsis>
56         <para/>
57         <synopsis>
58             S = grand("getgen")
59             grand("setgen", gen)
60
61             S = grand("getsd")
62             grand("setsd", S)
63
64             grand("setcgn", G)
65             S = grand("getcgn")
66
67             S = grand("phr2sd", phrase)
68
69             grand("initgn", I)
70             grand("setall", s1, s2, s3, s4)
71             grand("advnst", K)
72         </synopsis>
73     </refsynopsisdiv>
74     <refsection>
75         <title>Аргументы</title>
76         <variablelist>
77             <varlistentry>
78                 <term>m, n, o</term>
79                 <listitem>
80                     <para>
81                         целые числа, определяющие размеры матрицы/гиперматрицы <varname>Y</varname>.
82                     </para>
83                 </listitem>
84             </varlistentry>
85             <varlistentry>
86                 <term>X</term>
87                 <listitem>
88                     <para>
89                         матрица, у которой используются только её размеры (скажем <varname>m</varname> на <varname>n</varname>).
90                     </para>
91                 </listitem>
92             </varlistentry>
93             <varlistentry>
94                 <term>Y</term>
95                 <listitem>
96                     <para>
97                         матрица или гиперматрица со случайными элементами, зависящая от входных аргументов.
98                     </para>
99                 </listitem>
100             </varlistentry>
101             <varlistentry>
102                 <term>S</term>
103                 <listitem>
104                     <para>
105                         выходное значение действия (строка или вещественный вектор-столбец).
106                     </para>
107                 </listitem>
108             </varlistentry>
109         </variablelist>
110     </refsection>
111     <refsection>
112         <title>Описание</title>
113         <para>
114             Эта функция формирует случайные числа по различным законам
115             распределения.
116         </para>
117         <para>
118             Последовательности вызова:
119         </para>
120         <para>
121             <programlisting role="no-scilab-exec"><![CDATA[
122                 Y = grand(m, n, "bet", A, B)
123                 Y = grand(m, n, "bin", N, p)
124                 Y = grand(m, n, "nbn", N, p)
125                 Y = grand(m, n, "chi", Df)
126                 Y = grand(m, n, "nch", Df, Xnon)
127                 Y = grand(m, n, "exp", Av)
128                 Y = grand(m, n, "f", Dfn, Dfd)
129                 Y = grand(m, n, "nf", Dfn, Dfd, Xnon)
130                 Y = grand(m, n, "gam", shape, rate)
131                 Y = grand(m, n, "nor", Av, Sd)
132                 Y = grand(m, n, "geom", p)
133                 Y = grand(m, n, "poi", mu)
134                 Y = grand(m, n, "def")
135                 Y = grand(m, n, "unf", Low, High)
136                 Y = grand(m, n, "uin", Low, High)
137                 Y = grand(m, n, "lgi")
138              ]]></programlisting>
139         </para>
140         <para>
141             формируют матрицу размером <varname>m</varname> на <varname>n</varname>,
142             элементы которой являются случайными числами.
143
144             Все эти последовательности вызова могут быть расширены для создания гиперматрицы случайных чисел,
145             у которой более двух размерностей, определённых в виде целых чисел, перечисленных перед типом
146             статистического распределения:
147         </para>
148         <para>
149             <programlisting role="no-scilab-exec"><![CDATA[
150                 Y = grand(m, n, o, ..., "..", ...)
151             ]]></programlisting>
152         </para>
153         <para>
154             Другой способ указать размеры ожидаемого вектора, матрицы или гиперматрицы случайных чисел:
155         </para>
156         <para>
157             <programlisting role="no-scilab-exec"><![CDATA[
158                 Y = grand(X, ...)
159             ]]></programlisting>
160         </para>
161         <para>
162             где <varname>X</varname> - матрица или гиперматрица размером
163             <varname>m</varname> на <varname>n</varname> на ... . В
164             данном случае используются
165             только размеры матрицы <varname>X</varname>.
166         </para>
167         <para>
168             Последовательности вызова:
169         </para>
170         <programlisting role="no-scilab-exec"><![CDATA[
171             Y = grand(n, "mn", Mean, Cov)
172             Y = grand(n, "markov", P, x0)
173             Y = grand(n, "mul", nb, P)
174             Y = grand(n, "prm", vect)
175         ]]></programlisting>
176         <para>
177             формируют матрицу размером <varname>m</varname> на <varname>n</varname> со
178             случайными элементами, где <varname>m</varname> - размер аргумента
179             <varname>Mean</varname>, <varname>Cov</varname>, <varname>P</varname> или
180             <varname>vect</varname> в зависимости от ситуации (подробности ниже).
181         </para>
182         <para>
183             Последовательности вызова:
184         </para>
185         <programlisting role="no-scilab-exec"><![CDATA[
186             S = grand("getgen")
187             grand("setgen", gen)
188
189             S = grand("getsd")
190             grand("setsd", S)
191
192             grand("setcgn", G)
193             S = grand("getcgn")
194
195             grand("initgn", I)
196
197             grand("setall", s1, s2, s3, s4)
198
199             grand("advnst", K)
200         ]]></programlisting>
201         <para>
202             настраивают или запрашивают состояние имеющихся генераторов случайных чисел.
203         </para>
204     </refsection>
205     <refsection>
206         <title>Получение случайных чисел по заданному закону распределения</title>
207         <variablelist>
208             <varlistentry>
209                 <term>бета-распределение</term>
210                 <listitem>
211                     <para>
212                         <code>Y = grand(m, n, "bet", A, B)</code> формирует случайные
213                         реализации по бета-распределению с параметрами
214                         <varname>A</varname> и <varname>B</varname>.  Плотность бета-распределения лежит
215                         на интервале (0 &lt; x &lt; 1):
216                     </para>
217                     <para>
218                         <latex>
219                             \dfrac{x^{A-1}(1-x)^{B-1}}{\beta(A,B)}
220                         </latex>
221                     </para>
222                     <para>
223                         <varname>A</varname> и <varname>B</varname> должны быть вещественными числами
224                         >10<superscript>-37</superscript>. С этой функцией связана
225                         функция <link linkend="cdfbet">cdfbet</link>.
226                     </para>
227                 </listitem>
228             </varlistentry>
229             <varlistentry>
230                 <term>биномиальное распределение</term>
231                 <listitem>
232                     <para>
233                         <code>Y = grand(m, n, "bin", N, p)</code> формирует случайные реализации по биномиальному закону распределения с параметрами
234                         <varname>N</varname> (положительное целое) и <varname>p</varname> (вещественное число на интервале <literal>[0,1]</literal>): число
235                         "успехов" в серии из <varname>N</varname> независимых случайных (распределение Бернулли) экспериментов с вероятностью "успеха" в
236                         каждом из них <varname>p</varname>. С этой функцией связаны
237                         функции: <link linkend="binomial">binomial</link>, <link linkend="cdfbin">cdfbin</link>.
238                     </para>
239                 </listitem>
240             </varlistentry>
241             <varlistentry>
242                 <term>отрицательное биномиальное распределение</term>
243                 <listitem>
244                     <para>
245                         <code>Y = grand(m, n, "nbn", N, p)</code>  формирует случайные реализации по отрицательному биномиальному распределению с
246                         параметрами  <varname>N</varname> (положительное целое) и <varname>p</varname> (вещественное число на интервале
247                         <literal>(0,1)</literal>): число "неудач" случившихся до  <varname>N</varname>-го "успеха" в последовательности испытаний с
248                         вероятностью "успеха" <varname>p</varname>. С этой функцией
249                         связана функция <link linkend="cdfnbn">cdfnbn</link>.
250                     </para>
251                 </listitem>
252             </varlistentry>
253             <varlistentry>
254                 <term>хи-квадрат распределение</term>
255                 <listitem>
256                     <para>
257                         <code>Y = grand(m, n, "chi", Df)</code> формирует случайные
258                         реализации по распределению хи-квадрат с <varname>Df</varname>
259                         степенями свободы. Число степеней свободы должно быть
260                         вещественным, строго больше нуля. С этой функцией связана функция: <link linkend="cdfchi">cdfchi</link>.
261                     </para>
262                 </listitem>
263             </varlistentry>
264             <varlistentry>
265                 <term>нецентральное хи-квадрат распределение</term>
266                 <listitem>
267                     <para>
268                         <code>Y = grand(m, n, "nch", Df, Xnonc)</code>  формирует случайные реализации по нецентральному хи-квадрат распределению с
269                         <varname>Df</varname>  степенями свободы (вещественное значение &gt;= <literal>1.0</literal>) и параметром нецентральности
270                         <varname>Xnonc</varname> (вещественное число, больше либо равно
271                         нулю). С этой функцией связана функция: <link linkend="cdfchn">cdfchn</link>.
272                     </para>
273                 </listitem>
274             </varlistentry>
275             <varlistentry>
276                 <term>экспоненциальное распределение</term>
277                 <listitem>
278                     <para>
279                         <code>Y = grand(m, n, "exp", Av)</code> формирует случайные реализации по экспоненциальному распределению с математическим
280                         ожиданием <varname>Av</varname> (вещественное значение, строго больше нуля).
281                     </para>
282                 </listitem>
283             </varlistentry>
284             <varlistentry>
285                 <term>F-распределение (отношение дисперсий, распределение Фишера)</term>
286                 <listitem>
287                     <para>
288                         <code>Y = grand(m, n, "f", Dfn, Dfd)</code> формирует случайные реализации по F-распределению (отношение дисперсий, распределение
289                         Фишера) с <varname>Dfn</varname> (вещественное значение, строго больше нуля) в числителе и <varname>Dfd</varname> степенями
290                         свободы (вещественное значение, строго больше нуля) в знаменателе.
291                         С этой функцией связана функция: <link linkend="cdff">cdff</link>.
292                     </para>
293                 </listitem>
294             </varlistentry>
295             <varlistentry>
296                 <term>нецентральное F-распределение (отношение дисперсий)</term>
297                 <listitem>
298                     <para>
299                         <code>Y = grand(m, n, "nf", Dfn, Dfd, Xnonc)</code> формирует случайные реализации по нецентральному F-распределению (отношению
300                         дисперсий) с <varname>Dfn</varname> степенями свободы (вещественное значение, больше либо равно <literal>1</literal>)  в
301                         числителе, и <varname>Dfd</varname> степенями свободы (вещественное значение, строго больше нуля) в знаменателе и
302                         параметром нецентральности <varname>Xnonc</varname> (вещественное число, больше либо равно нулю). С этой функцией связана функция:
303                         <link linkend="cdffnc">cdffnc</link>.
304                     </para>
305                 </listitem>
306             </varlistentry>
307             <varlistentry>
308                 <term>гамма-распределение</term>
309                 <listitem>
310                     <para>
311                         <code>Y = grand(m, n, "gam", shape, rate)</code> формирует
312                         случайные реализации по гамма-распределению с параметрами
313                         <varname>shape</varname> (вещественное значение, строго
314                         больше нуля) и <varname>rate</varname> (вещественное
315                         значение, строго больше нуля) (<literal>real</literal>
316                         &gt; <literal>0</literal>). Плотность гамма-распределения
317                         равна:
318                     </para>
319                     <para>
320                         <latex>
321                             \dfrac{ \textrm{rate}^{\textrm{shape}} x^{\textrm{shape}-1} e^{-\textrm{rate} x}}{\gamma(\textrm{shape}) }
322                         </latex>
323                     </para>
324                     <para>
325                         С этой функцией связаны: <link linkend="gamma">gamma</link>,
326                         <link linkend="cdfgam">cdfgam</link>.
327                     </para>
328                 </listitem>
329             </varlistentry>
330             <varlistentry>
331                 <term>распределение Гаусса-Лапласа (нормальное)</term>
332                 <listitem>
333                     <para>
334                         <code>Y = grand(m, n, "nor", Av, Sd)</code> формирует случайные реализации по нормальному распределению с математическим ожиданием
335                         <varname>Av</varname>  (вещественное значение), среднеквадратичным отклонением  <varname>Sd</varname> (вещественное значение, больше
336                         либо равно нулю). С этой функцией связана: <link linkend="cdfnor">cdfnor</link>.
337                     </para>
338                 </listitem>
339             </varlistentry>
340             <varlistentry>
341                 <term>многомерное гауссовское (многомерное нормальное) распределение</term>
342                 <listitem>
343                     <para>
344                         <code>Y = grand(n, "mn", Mean, Cov)</code> формирует случайные реализации по многомерному гауссовскому распределению; среднее
345                         значение <varname>Mean</varname> должно быть вектор-столбцом размером <literal>m</literal> на <literal>1</literal>, а
346                         ковариация <varname>Cov</varname> должна быть симметричной положительно определённой матрицей размером <literal>m</literal>
347                         на <literal>m</literal> (тогда <varname>Y</varname> будет матрицей размером <literal>m</literal> на  <literal>n</literal>).
348                     </para>
349                 </listitem>
350             </varlistentry>
351             <varlistentry>
352                 <term>геометрическое распределение</term>
353                 <listitem>
354                     <para>
355                         <code>Y = grand(m, n, "geom", p)</code>  формирует случайные реализации по геометрическому распределению с параметром
356                         <varname>p</varname>: количество независимых экспериментов (с вероятностью "успеха" <varname>p</varname>) до тех пор пока не
357                         будет "успех". Вероятность  <varname>p</varname> должна быть в интервале [1.3e-307, 1]).
358                     </para>
359                     <para>
360                         <varname>Y</varname>  состоит из положительных целочисленных вещественных чисел, которые означают "число экспериментов,
361                         проведённых до первого успешного".
362                     </para>
363                 </listitem>
364             </varlistentry>
365             <varlistentry>
366                 <term>цепь Маркова</term>
367                 <listitem>
368                     <para>
369                         <code>Y = grand(n, "markov", P, x0)</code> формирует <varname>n</varname> последовательных состояний цепи Маркова,
370                         описанных матрицей переходных состояний <varname>P</varname>. Сумма элементов в каждой строке в <varname>P</varname> равна
371                         <literal>1</literal>. Исходное состояние задаётся через <varname>x0</varname>. Если <varname>x0</varname> является
372                         матрицей размером <code>m=size(x0,"*")</code>, то <varname>Y</varname> является матрицей размером
373                         <varname>m</varname> на <varname>n</varname>.  <code>Y(i,:)</code> является выборочной траекторией, полученной из исходного состояния
374                         <code>x0(i)</code>.
375                     </para>
376                 </listitem>
377             </varlistentry>
378             <varlistentry>
379                 <term>мультиномиальное (полиномиальное) распределение</term>
380                 <listitem>
381                     <para>
382                         <code>Y = grand(n, "mul", nb, P)</code>  формирует <varname>n</varname> случайных реализаций по мультиномиальному
383                         распределению: совокупность <varname>nb</varname> событий в <literal>m</literal> категориях (положить <varname>nb</varname>
384                         "шаров" в <literal>m</literal> "ящиков"). <literal>P(i)</literal> является вероятностью того, что событие будет классифицировано в
385                         категории <literal>i</literal>. Вектор-столбец вероятностей <varname>P</varname> размером <literal>m-1</literal> (вероятность
386                         категории <literal>m</literal> равна <literal>1-sum(P)</literal>). <varname>Y</varname>  имеет размер <literal>m</literal> на
387                         <literal>n</literal>. Каждый столбец <literal>Y(:,j)</literal> является случайной реализацией по мультиномиальному распределению,
388                         а <literal>Y(i,j)</literal> является  количеством событий, попавших в категорию <literal>i</literal> (для
389                         <literal>j</literal>-того наблюдения) (<literal>sum(Y(:,j)) = nb</literal>).
390                     </para>
391                 </listitem>
392             </varlistentry>
393             <varlistentry>
394                 <term>распределение Пуассона</term>
395                 <listitem>
396                     <para>
397                         <code>Y = grand(m, n, "poi", mu)</code> формирует случайные
398                         реализации по распределению Пуассона с математическим ожиданием <varname>mu</varname> (вещественное значение, больше либо равно
399                         нулю). С этой функцией связана: <link linkend="cdfpoi">cdfpoi</link>.
400                     </para>
401                 </listitem>
402             </varlistentry>
403             <varlistentry>
404                 <term>случайные перестановки</term>
405                 <listitem>
406                     <para>
407                         <code>Y = grand(n, "prm", vect)</code> формирует <varname>n</varname> случайных перестановок <varname>vect</varname>.
408                         <varname>vect</varname> может быть вектор-столбцов вещественных чисел или вектором, матрицей или гиперматрицей
409                         комплексных, целых, логических, полиномиальных или строковых значений; полной или разрежённой.
410                         Из-за стековой структуры, <varname>vect</varname> не должен и не может быть вектор-строкой.
411                         Эта возможность перекрывает Matlab'овскую функцию <code>randperm()</code> поскольку
412                         <code>randperm(n)</code> эквивалентно <code>grand(1,'prm',(1:n)')</code>,
413                         а <code>randperm(n, k)</code> может быть получено через
414                         <code>grand(1,'prm',(1:n)'); ans(1:k)</code>.
415                     </para>
416                 </listitem>
417             </varlistentry>
418             <varlistentry>
419                 <term>непрерывное равномерное распределение (def)</term>
420                 <listitem>
421                     <para>
422                         <code>Y = grand(m, n, "def")</code> формирует случайные реализации по равномерному распределению на интервале
423                         <literal>[0,1)</literal> (<literal>1</literal>  в интервал не входит).
424                     </para>
425                 </listitem>
426             </varlistentry>
427             <varlistentry>
428                 <term>непрерывное равномерное распределение (unf)</term>
429                 <listitem>
430                     <para>
431                         <code>Y = grand(m, n, "unf", Low, High)</code> формирует случайные вещественные значения равномерно распределённые на интервале
432                         <literal>[Low, High)</literal> (<varname>High</varname> в интервал не входит).
433                     </para>
434                 </listitem>
435             </varlistentry>
436             <varlistentry>
437                 <term>дискретное равномерное распределение (uin)</term>
438                 <listitem>
439                     <para>
440                         <code>Y = grand(m, n, "uin", Low, High)</code> формирует случайные целые числа, равномерно распределённые между значениями
441                         <varname>Low</varname> и <varname>High</varname> (включительно). <varname>High</varname> и <varname>Low</varname> должны быть
442                         такими целыми числами, что <literal>(High-Low+1) &lt; 2.147483561e9</literal>.
443                     </para>
444                 </listitem>
445             </varlistentry>
446             <varlistentry>
447                 <term>равномерное распределение (lgi)</term>
448                 <listitem>
449                     <para>
450                         <code>Y = grand(m, n, "lgi")</code> возвращает базовый выход текущего генератора: случайные целые числа по равномерному
451                         распределению на интервалах:
452                     </para>
453                     <itemizedlist>
454                         <listitem>
455                             <para>
456                                 <literal>[0, 2^32 - 1]</literal>  для mt и kiss;
457                             </para>
458                         </listitem>
459                         <listitem>
460                             <para>
461                                 <literal>[0, 2^31 - 87]</literal> для clcg2;
462                             </para>
463                         </listitem>
464                         <listitem>
465                             <para>
466                                 <literal>[0, 2^31 - 2]</literal> для clcg4;
467                             </para>
468                         </listitem>
469                         <listitem>
470                             <para>
471                                 <literal>[0, 2^31 - 1]</literal> для urand.
472                             </para>
473                         </listitem>
474                     </itemizedlist>
475                 </listitem>
476             </varlistentry>
477         </variablelist>
478     </refsection>
479     <refsection>
480         <title>Установка/получение текущего генератора и его состояния</title>
481         <para>
482             У пользователя есть возможность выбирать между основными генераторами (которые
483             дают случайные целые числа по распределению <literal>"lgi"</literal>, другие
484             получаются из него).
485         </para>
486         <variablelist>
487             <varlistentry>
488                 <term>mt</term>
489                 <listitem>
490                     <para>
491                         Вихрь Марсенна (Mersenne-Twister), разработанный японскими учёными
492                         Макото Мацумото и Такудзи Нисимурой, период около
493                         <literal>2^19937</literal>, состояние задаётся массивом из
494                         <literal>624</literal> целых чисел (плюс индекс на этот массив).
495                         Этот генератор используется по умолчанию.
496                     </para>
497                 </listitem>
498             </varlistentry>
499             <varlistentry>
500                 <term>kiss</term>
501                 <listitem>
502                     <para>
503                         "Keep It Simple Stupid" ("придерживайся простоты"), разработанный
504                         Джорджем Марсальи, период около <literal>2^123</literal>,
505                         состояние задаётся четырьмя целыми числами.
506                     </para>
507                 </listitem>
508             </varlistentry>
509             <varlistentry>
510                 <term>clcg2</term>
511                 <listitem>
512                     <para>
513                         Комбинация двух линейных конгруэнтных генераторов П. Л'Экюйера (P. L'Ecuyer) с периодом около <literal>2^61</literal>, состояние
514                         задаётся двумя целыми числами.
515                     </para>
516                 </listitem>
517             </varlistentry>
518             <varlistentry>
519                 <term>clcg4</term>
520                 <listitem>
521                     <para>
522                         Комбинация четырёх линейных конгруэнтных генераторов П. Л'Экюйера
523                         (P. L'Ecuyer)  с периодом около <literal>2^121</literal>, состояние
524                         задаётся четырьмя целыми числами. Этот генератор разделён на разные
525                         виртуальные (неперекрывающиеся) генераторы (<literal>101</literal>
526                         генератор), которые могут быть полезными для разных задач (см.
527                         "Опции, специфичные для "clcg4"" и "Тестовый пример для "clcg4"").
528                     </para>
529                 </listitem>
530             </varlistentry>
531             <varlistentry>
532                 <term>urand</term>
533                 <listitem>
534                     <para>
535                         Генератор, используемый функцией Scilab'а <link linkend="rand">rand</link>, состояние задаётся одним целым числом,
536                         период <literal>2^31</literal>. Этот генератор основан на "Urand,
537                         A Universal Random Number Generator" By, Michael A. Malcolm, Cleve
538                         B. Moler, Stan-Cs-73-334, January 1973, Computer Science
539                         Department, School Of Humanities And Sciences, Stanford
540                         University. Это самый быстрый генератор из данного списка, однако
541                         его статистические качества менее удовлетворительны по сравнению с
542                         другими генераторами.
543                     </para>
544                 </listitem>
545             </varlistentry>
546         </variablelist>
547         <para>
548             Различные действия, общие для всех генераторов:
549         </para>
550         <variablelist>
551             <varlistentry>
552                 <term>действие = "getgen"</term>
553                 <listitem>
554                     <para>
555                         <code>S = grand("getgen")</code> возвращает текущий основной
556                         генератор. В данном случае <varname>S</varname> является одной
557                         строкой из <literal>"mt"</literal>, <literal>"kiss"</literal>,
558                         <literal>"clcg2"</literal>, <literal>"clcg4"</literal>,
559                         <literal>"urand"</literal>.
560                     </para>
561                 </listitem>
562             </varlistentry>
563             <varlistentry>
564                 <term>действие = "setgen"</term>
565                 <listitem>
566                     <para>
567                         <code>grand("setgen",gen)</code> устанавливает текущий основной
568                         генератор. В данном случае <varname>gen</varname> может быть одной
569                         строкой из <literal>"mt"</literal>, <literal>"kiss"</literal>,
570                         <literal>"clcg2"</literal>, <literal>"clcg4"</literal>,
571                         <literal>"urand"</literal>.
572                         Заметьте, что этот вызов возвращает новый текущий генератор, т.е.
573                         <varname>gen</varname>.
574                     </para>
575                 </listitem>
576             </varlistentry>
577             <varlistentry>
578                 <term>действие = "getsd"</term>
579                 <listitem>
580                     <para>
581                         <code>S = grand("getsd")</code> получает текущее состояние
582                         (текущие семена) текущего основного генератора.
583                         <varname>S</varname> задаётся в виде вектор-столбца (целочисленных
584                         значений) с количеством элементов <literal>625</literal> для
585                         <literal>"mt"</literal> (первое значение является индексом в
586                         интервале <literal>[1,624]</literal>),  <literal>4</literal> для
587                         <literal>"kiss"</literal>,  <literal>2</literal> для
588                         <literal>"clcg2"</literal>, <literal>4</literal> для
589                         <literal>"clcg4"</literal> (для последнего вы получите текущее
590                         состояние текущего виртуального генератора) и
591                         <literal>1</literal> для <literal>"urand"</literal>.
592                     </para>
593                 </listitem>
594             </varlistentry>
595             <varlistentry>
596                 <term>действие = "setsd"</term>
597                 <listitem>
598                     <para>
599                         <code>grand("setsd", S)</code> и <code>grand("setsd", s1[, s2, s3, s4])</code>  устанавливают состояние текущего основного генератора
600                         (несколько семян):
601                     </para>
602                     <variablelist>
603                         <varlistentry>
604                             <term>для mt</term>
605                             <listitem>
606                                 <para>
607                                     <varname>S</varname>является вектор-столбцом целых чисел с количеством элементов <literal>625</literal>
608                                     (значение первого элемента вектора является индексом и должно быть в интервале <literal>[1,624]</literal>, а
609                                     значения остальных <literal>624</literal> элементов должны лежать в интервале
610                                     <literal>[0,2^32)</literal>), но не должны быть все нулями); более простая инициализация может быть
611                                     сделана с помощью только одного целого числа <varname>s1</varname> (<varname>s1</varname> должно
612                                     лежать в интервале <literal>[0,2^32)</literal>);
613                                 </para>
614                             </listitem>
615                         </varlistentry>
616                         <varlistentry>
617                             <term>для kiss</term>
618                             <listitem>
619                                 <para>
620                                     должны быть указаны четыре целых числа <varname>s1</varname>, <varname>s2</varname>,
621                                     <varname>s3</varname>, <varname>s4</varname> на интервале <literal>[0,2^32)</literal>;
622                                 </para>
623                             </listitem>
624                         </varlistentry>
625                         <varlistentry>
626                             <term>для clcg2</term>
627                             <listitem>
628                                 <para>
629                                     должны быть указаны два целых числа <varname>s1</varname> на интервале
630                                     <literal>[1,2^31-86]</literal> и <varname>s2</varname> на интервале  <literal>[1,2^31-250]</literal>;
631                                 </para>
632                             </listitem>
633                         </varlistentry>
634                         <varlistentry>
635                             <term>для clcg4</term>
636                             <listitem>
637                                 <para>
638                                     требуются четыре целых числа <varname>s1</varname> на
639                                     интервале <literal>[1,2^31-2]</literal>, <varname>s2</varname> на интервале <literal>[1,2^31-106]</literal>, <varname>s3</varname>
640                                     на интервале <literal>[1,2^31-226]</literal>, <varname>s4</varname> на интервале
641                                     <literal>[1,2^31-326]</literal>;
642                                 </para>
643                                 <para>
644                                     <caution>
645                                         Предостережение: с clcg4 вы устанавливаете семена текущего виртуального генератора, но вы можете
646                                         потерять синхронизацию между ним и другими виртуальными генераторами (т.е. не гарантируется,
647                                         что генерируемая последовательность не перекрывается с генерируемой последовательностью
648                                         другого  виртуального генератора) =&gt; вместо этого используйте опцию "setall".
649                                     </caution>
650                                 </para>
651                             </listitem>
652                         </varlistentry>
653                         <varlistentry>
654                             <term>для urand</term>
655                             <listitem>
656                                 <para>
657                                     должно быть указано одно целое число <varname>s1</varname> на интервале <literal>[0,2^31)</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         <para>
908             В следующем примере мы формируем гиперматрицу случайных чисел с "нормальным" распределением размерами <varname>10</varname>
909             на <varname>10</varname> на <varname>10</varname> и строим гистограммы. Показываются первый и последний слои.
910         </para>
911         <programlisting role="example"><![CDATA[
912 // Возвращает гиперматрицу случайных чисел с нормальным
913 // распределением, мат. ожидание 0 и среднеквадратичное отклонение 1, // размерами 10 на 10 на 10.
914 // Показаны только первый и последний слои.
915 R = grand(10,10,10,"nor",0,1);
916 subplot(1,2,1)
917 hist3d(R(:,:,1));
918 xtitle("Слой 1");
919 subplot(1,2,2)
920 hist3d(R(:,:,10));
921 xtitle("Слой 10");
922  ]]></programlisting>
923         <scilab:image localized="true">
924             R = grand(10,10,10,"nor",0,1);
925             subplot(1,2,1)
926             hist3d(R(:,:,1));
927             xtitle("Слой 1");
928             subplot(1,2,2)
929             hist3d(R(:,:,10));
930             xtitle("Слой 10");
931         </scilab:image>
932     </refsection>
933     <refsection>
934         <title>Получение более или менее предсказуемых чисел</title>
935         <para>
936             Генераторы псевдослучайных чисел основаны на детерминированных
937             последовательностях. Для того, чтобы получить повторное воспроизведение
938             моделирования, исходное семя генератора равно такой константе, что
939             последовательность будет оставаться одной и той же от одной сессии к другой.
940             Следовательно, по умолчанию, первые числа, производимые функцией
941             <function>grand</function>, всегда одни и те же.
942         </para>
943         <para>
944             В некоторых ситуациях мы можем захотеть инициализировать семя генератора для
945             того, чтобы получить менее предсказуемые числа. В этом случае мы можем
946             инициализировать семя с помощью выходного значения функции
947             <function>getdate</function>:
948         </para>
949         <programlisting role="example"><![CDATA[
950 n=getdate("s");
951 grand("setsd",n)
952     ]]></programlisting>
953     </refsection>
954     <refsection>
955         <title>Тестовый пример для clcg4</title>
956         <para>
957             Пример необходимости возможности разделения clcg4 следующий. Сравниваются два
958             статистических метода по данным разного размера. Первый является
959             бутстреп-методом и считается точным при использовании меньшего количества данных,
960             чем второй метод, который использует только грубую силу. Для первого метода будет
961             генерироваться набор данных размером равномерно распределённым между
962             <literal>25</literal> и <literal>50</literal>. Затем будет генерироваться и
963             анализироваться набор данных определённого размера. Второй метод будет
964             выбирать размер набора данных между <literal>100</literal> и
965             <literal>200</literal>, генерировать данные и анализировать их. Этот процесс
966             будет повторяться <literal>1000</literal> раз. Для уменьшения разброса мы
967             хотим, чтобы числа, используемые в этих двух методах были одинаковыми для
968             каждого из <literal>1000</literal> сравнений. Но второй метод будет
969             использовать больше случайных чисел, чем первый метод и без этого пакета
970             синхронизация была бы затруднительна. С clcg4 это легко. Используем генератор
971             <literal>0</literal> для получения размера выборки для метода один и генератор
972             <literal>1</literal> для получения данных. Затем сбрасываем состояние  к
973             начальному текущего блока и делаем то же самое для второго метода. Это
974             гарантирует, что исходные данные для второго метода те же, что использовались
975             в первом методе. Когда они оба закончатся, передвигаем вперёд блок для обоих
976             генераторов.
977         </para>
978     </refsection>
979     <refsection role="see also">
980         <title>Смотрите также</title>
981         <simplelist type="inline">
982             <member>
983                 <link linkend="rand">rand</link>
984             </member>
985             <member>
986                 <link linkend="sprand">sprand</link>
987             </member>
988             <member>
989                 <link linkend="ssrand">ssrand</link>
990             </member>
991         </simplelist>
992     </refsection>
993 </refentry>