1
0
mirror of https://github.com/php/doc-ru.git synced 2026-04-30 02:33:22 +02:00
Files
Mikhail Alferov 47db2e98bc Update d6dc2be to En (#1220)
* Update array-rand.xml

* Update shuffle.xml

* Update mt-rand.xml

* Update rand.xml

* Update shuffle.xml

* Update str-shuffle.xml
2026-03-28 14:39:26 +03:00

214 lines
8.5 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d6dc2be3c5c70e4a1c3d13f788643ea232747c19 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.mt-rand" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mt_rand</refname>
<refpurpose>Генерирует случайное значение через генератор случайных чисел на базе Вихря Мерсе́нна</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>mt_rand</methodname>
<void/>
</methodsynopsis>
<methodsynopsis>
<type>int</type><methodname>mt_rand</methodname>
<methodparam><type>int</type><parameter>min</parameter></methodparam>
<methodparam><type>int</type><parameter>max</parameter></methodparam>
</methodsynopsis>
<simpara>
Генераторы случайных чисел старых стандартных библиотек языка C
создают результат на основе сомнительных или неизвестных характеристик и работают медленно.
Функция <function>mt_rand</function> заменяет старую функцию
<function>rand</function> и работает на базе генератора случайных чисел
с известными характеристиками на основе алгоритма
<link xlink:href="&url.mersenne;">Вихрь Мерсе́нна</link>
и генерирует случайные числа в среднем в четыре раза быстрее,
чем функция rand() стандартной библиотеки языка C.
</simpara>
<simpara>
При вызове без необязательных параметров <parameter>min</parameter>
и <parameter>max</parameter> функция <function>mt_rand</function>
возвращает псевдослучайное значение от 0 до значения, которое возвращает функция
<function>mt_getrandmax</function>. Вызов <literal>mt_rand(5, 15)</literal>
вернёт случайное число между 5 и 15 включительно.
</simpara>
&caution.cryptographically-insecure;
&caution.mt19937-global-state;
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>min</parameter></term>
<listitem>
<para>
Необязательный параметр: минимальное значение случайного числа. Значение по умолчанию равняется 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>max</parameter></term>
<listitem>
<para>
Необязательный параметр: максимальное значение случайного числа. Значение по умолчанию
равняется значению возврата функции <function>mt_getrandmax</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает случайное целое значение между значением параметра <parameter>min</parameter>, или 0,
и значением параметра <parameter>max</parameter>, или значением, которое
возвращает функция <function>mt_getrandmax</function>, включительно.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<itemizedlist>
<listitem>
<simpara>
Функция выбросит ошибку <classname>ValueError</classname>,
если значение параметра <parameter>max</parameter> окажется меньше значения параметра <parameter>min</parameter>.
</simpara>
</listitem>
</itemizedlist>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
Функция выбросит ошибку <classname>ValueError</classname>,
если значение параметра <parameter>max</parameter> окажется меньше значения параметра <parameter>min</parameter>;
раньше функция выдавала ошибку уровня <constant>E_WARNING</constant> и возвращала значение &false;.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
В функции <function>mt_rand</function>
<link linkend="migration72.incompatible.rand-mt_rand-output">исправили ошибку</link>
смещения по модулю, поэтому последовательности, которые сгенерировали с конкретным начальным
значением, не совпадают со значениями, которые сгенерировали в PHP 7.1 на 64-битных машинах.
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
Функция <function>rand</function> <link linkend="migration71.incompatible.rand-srand-aliases">стала</link>
псевдонимом функции <function>mt_rand</function>.
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
Функцию <function>mt_rand</function>
<link linkend="migration71.incompatible.fixes-to-mt_rand-algorithm">обновили</link>
и теперь функция генерирует значения через корректную версию генератора случайных чисел на основе
Вихря Мерсенна. Старое поведение получают через функцию <function>mt_srand</function> с аргументом
<constant>MT_RAND_PHP</constant> для второго параметра.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>
Пример генерации случайного значения через генератор случайных чисел на базе Вихря Мерсе́нна
функцией <function>mt_rand</function>
</title>
<programlisting role="php">
<![CDATA[
<?php
echo mt_rand(), "\n";
echo mt_rand(), "\n";
echo mt_rand(5, 15), "\n";
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
1604716014
1478613278
6
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<para>
Ширине диапазона <parameter>min</parameter><parameter>max</parameter> нельзя
выходить за границы значения, которое возвращает функция <function>mt_getrandmax</function>.
Требование выполняется, если: (<parameter>max</parameter> - <parameter>min</parameter>) &lt;= <function>mt_getrandmax</function>.
При выходе за пределы диапазона возникает риск снижения качества
случайных чисел, которые возвращает функция <function>mt_rand</function>.
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mt_srand</function></member>
<member><function>mt_getrandmax</function></member>
<member><function>random_int</function></member>
<member><function>random_bytes</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->