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