Skip to content

Commit 3727558

Browse files
authored
random関連のドキュメントの更新 (#298)
* mt_rand() はPHP 8.0以降ValueError をスローする (php/doc-en#4660) * `getrandmax`が小さいのはPHP 7.1までであることを明示 (php/doc-en#4664) * 誤字訂正 * Mt19937 の重複についての訳を改善 * 「重複したシードが存在します」→「シードが重複します」
1 parent 3f5d9f8 commit 3727558

File tree

3 files changed

+42
-25
lines changed

3 files changed

+42
-25
lines changed

language-snippets.ent

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,16 @@ xmlns="http://docbook.org/ns/docbook"><simpara>この関数は PHP 5.3.0 で
3535
</para>
3636
<para>
3737
暗黙、または明示的にランダムなシードに依存する場合、
38-
重複がそれ(4,294,967,296 個)よりも早く発生します
39-
誕生日のパラドックスによると、80,000 個以下のランダムな値を生成した場合でも
40-
シードの重複が 50&#37; の確率で発生します
41-
重複したシードの 10&#37; が、ざっと 30,000 個のランダムな値を生成したあとに発生します
38+
重複がそれ(4,294,967,296 個)よりもかなり早く発生します
39+
誕生日のパラドックスによると、80,000 個以下のランダムなシードを生成した場合でも
40+
50&#37; の確率でシードが重複します
41+
ざっと 30,000 個のランダムなシードを生成すると、10&#37; の確率でシードが重複します
4242
</para>
4343
<para>
4444
このため、無視できる確率以上に重複したシーケンスが発生してはいけないアプリケーションでは、Mt19937 は適していません。
4545
再現可能なシードが必須の場合、
4646
<classname>Random\Engine\Xoshiro256StarStar</classname> と <classname>Random\Engine\PcgOneseq128XslRr64</classname>
47-
が、ランダムな値が衝突しにくく、より大きなシードをサポートしています
47+
が、ずっと大きなシードをサポートしているため、衝突の可能性が低いです
4848
再現可能なシードが必須でない場合、
4949
<classname>Random\Engine\Secure</classname>
5050
が、暗号学的にセキュアなランダム性を提供します。
@@ -354,7 +354,7 @@ xmlns="http://docbook.org/ns/docbook"><simpara>この機能は PHP 8.4.0 で
354354
xmlns="http://docbook.org/ns/docbook"><simpara>この関数は PHP 8.4.0 で
355355
<emphasis>非推奨</emphasis>になります。この関数に頼らないことを強く推奨します。</simpara></warning>'>
356356

357-
<!ENTITY removed.php.future 'この非推奨の機能は、<emphasis xmlns="http://docbook.org/ns/docbook">きっと</emphasis>
357+
<!ENTITY removed.php.future 'この非推奨の機能は、<emphasis xmlns="http://docbook.org/ns/docbook">きっと</emphasis>
358358
将来 <emphasis xmlns="http://docbook.org/ns/docbook">削除</emphasis> されるでしょう。'>
359359

360360
<!ENTITY warn.deprecated.function.removed-5-3-0 '<warning xmlns="http://docbook.org/ns/docbook"><simpara>
@@ -678,7 +678,7 @@ xmlns="http://docbook.org/ns/docbook"><simpara>この関数は PHP 8.1.0 で
678678
</listitem>
679679
<listitem>
680680
<simpara>
681-
<constant>SORT_NATURAL</constant> - 要素の比較を文字列として行い、
681+
<constant>SORT_NATURAL</constant> - 要素の比較を文字列として行い、
682682
<function>natsort</function> と同様の「自然順」で比較します。
683683
</simpara>
684684
</listitem>
@@ -1318,7 +1318,7 @@ $font = 'SomeFont';
13181318
<function>mb_regex_encoding</function> で指定した文字エンコーディングを、
13191319
この関数の文字エンコーディングとして使用します。</para></note>'>
13201320

1321-
<!ENTITY mbstring.encoding.parameter '<para xmlns="http://docbook.org/ns/docbook"><parameter>encoding</parameter>
1321+
<!ENTITY mbstring.encoding.parameter '<para xmlns="http://docbook.org/ns/docbook"><parameter>encoding</parameter>
13221322
パラメータには文字エンコーディングを指定します。省略した場合、もしくは &null; の場合は、
13231323
内部文字エンコーディングを使用します。</para>'>
13241324

@@ -1588,7 +1588,7 @@ object</parameter></term><listitem><para>手続き型のみ: <function>date_crea
15881588
が返す <classname>DateTime</classname> オブジェクト</para></listitem></varlistentry>'>
15891589

15901590
<!ENTITY date.datetime.description.modified '<varlistentry xmlns="http://docbook.org/ns/docbook"><term><parameter>object</parameter></term>
1591-
<listitem><para>手続き型のみ:
1591+
<listitem><para>手続き型のみ:
15921592
<function>date_create</function> が返す <classname>DateTime</classname> オブジェクト。
15931593
この関数は、このオブジェクトを変更します。</para></listitem></varlistentry>'>
15941594

@@ -1651,7 +1651,7 @@ object</parameter></term><listitem><para>手続き型のみ: <function>date_crea
16511651
この関数は、HTML4 のパーサを使って入力をパースします。モダンなWebブラウザが採用している HTML5 のパースルールとは異なります。入力によっては、このことが原因で異なるDOM構造になるかもしれません。よって、この関数はHTMLを無害化する目的で安全に使えません。
16521652
</simpara>
16531653
<simpara>
1654-
HTML をパースする挙動は、利用している
1654+
HTML をパースする挙動は、利用している
16551655
<literal>libxml</literal> のバージョンに依存します。
16561656
特にエッジケースやエラーハンドリングについてそれが当てはまります。
16571657
HTML5 に準拠したパースを行うには、PHP 8.4 で追加される
@@ -2170,7 +2170,7 @@ PECL 拡張モジュールのインストール</link> という章にありま
21702170
といった関連する情報については、次の場所にあります。'>
21712171

21722172
<!ENTITY pecl.info.dead 'この拡張モジュールは、メンテナンスされておらず開発が止まっています。
2173-
しかし、ソースコードは <acronym xmlns="http://docbook.org/ns/docbook">PECL</acronym>
2173+
しかし、ソースコードは <acronym xmlns="http://docbook.org/ns/docbook">PECL</acronym>
21742174
<acronym xmlns="http://docbook.org/ns/docbook">SVN</acronym> から取得できます。'>
21752175

21762176
<!ENTITY pecl.info.dead.git 'この拡張モジュールは、メンテナンスされておらず開発が止まっています。
@@ -2620,7 +2620,7 @@ Apache 設定ファイルにパスの値を追加する際、例えば
26202620
<!ENTITY imagick.method.available.0x657 'このメソッドは、ImageMagick バージョン 6.5.7 以降で Imagick をコンパイルした場合に使用可能です。'>
26212621
<!ENTITY imagick.method.not.available.0x700 'このメソッドは、ImageMagick バージョン 7.0.0 以降で Imagick をコンパイルした場合には利用できません。'>
26222622

2623-
<!ENTITY imagick.constant.available 'この定数は、Imagick のコンパイルを次のバージョンの ImageMagick で
2623+
<!ENTITY imagick.constant.available 'この定数は、Imagick のコンパイルを次のバージョンの ImageMagick で
26242624
行った場合に使用可能です。'>
26252625

26262626
<!ENTITY imagick.deprecated.function-3-4-4 '<warning xmlns="http://docbook.org/ns/docbook"><simpara>この関数は Imagick 3.4.4 以降では <emphasis>非推奨</emphasis> になりました。この関数に依存したコードを書くのはやめましょう。</simpara></warning>'>
@@ -4473,7 +4473,7 @@ local: {
44734473
数値の後にドル記号 <literal>$</literal> を続けます。
44744474
</para>
44754475
</formalpara>
4476-
4476+
44774477
<para>
44784478
<table>
44794479
<title>フラグ一覧</title>
@@ -5268,7 +5268,7 @@ xmlns="http://docbook.org/ns/docbook"><simpara>この関数は、PECL uopz 5.0.0
52685268
たいていの場合は、正しい SSL 証明書を持つサーバーと通信するならこれを変更する必要はありません。
52695269
OpenSSL が、よく知られた CA バンドルを使うように設定されているからです。
52705270
</para>
5271-
5271+
52725272
<para xmlns="http://docbook.org/ns/docbook">
52735273
デフォルトの CA バンドルを上書きすることもできます。
52745274
openssl.cafile あるいは openssl.capath を設定すればグローバルに変更でき、コンテキストオプション

reference/random/functions/mt-rand.xml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: 0b6c76516a299395a3703e6df44f8ea4cb4549a8 Maintainer: hirokawa Status: ready -->
3+
<!-- EN-Revision: 0a5e7b12546b62a611a0cbc7105e617ab96fbcbd Maintainer: hirokawa Status: ready -->
44
<!-- CREDITS: takagi,mumumu -->
55
<refentry xml:id="function.mt-rand" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
66
<refnamediv>
@@ -65,10 +65,19 @@
6565
<parameter>min</parameter> (あるいは 0)
6666
から <parameter>max</parameter> (あるいは <function>mt_getrandmax</function>、それぞれ端点を含む)
6767
までの間のランダムな整数値を返します。
68-
<parameter>max</parameter> が <parameter>min</parameter> より小さい場合は
69-
&false; を返します。
7068
</para>
7169
</refsect1>
70+
<refsect1 role="errors">
71+
&reftitle.errors;
72+
<itemizedlist>
73+
<listitem>
74+
<simpara>
75+
<parameter>max</parameter> が <parameter>min</parameter> より小さい場合
76+
<classname>ValueError</classname> がスローされます。
77+
</simpara>
78+
</listitem>
79+
</itemizedlist>
80+
</refsect1>
7281
<refsect1 role="changelog">
7382
&reftitle.changelog;
7483
<para>
@@ -81,6 +90,14 @@
8190
</row>
8291
</thead>
8392
<tbody>
93+
<row>
94+
<entry>8.0.0</entry>
95+
<entry>
96+
<parameter>max</parameter> が <parameter>min</parameter> より小さい場合は
97+
<classname>ValueError</classname> がスローされます。
98+
以前は <constant>E_WARNING</constant> が発生し、関数は &false; を返していました。
99+
</entry>
100+
</row>
84101
<row>
85102
<entry>7.2.0</entry>
86103
<entry>
@@ -92,7 +109,7 @@
92109
<row>
93110
<entry>7.1.0</entry>
94111
<entry>
95-
<function>rand</function> は、<function>mt_rand</function> の
112+
<function>rand</function> は、<function>mt_rand</function> の
96113
<link linkend="migration71.incompatible.rand-srand-aliases">エイリアスになりました。</link>
97114
</entry>
98115
</row>

reference/random/functions/rand.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: 826073522514072830b63bee2b6135dc675ea45d Maintainer: hirokawa Status: ready -->
3+
<!-- EN-Revision: bf672f5f2402ee78264a130c52defeed37fe44bf Maintainer: hirokawa Status: ready -->
44
<!-- CREDITS: takagi,mumumu -->
55
<refentry xml:id="function.rand" xmlns="http://docbook.org/ns/docbook">
66
<refnamediv>
@@ -22,15 +22,15 @@
2222
オプションの引数
2323
<parameter>min</parameter>,<parameter>max</parameter>
2424
を省略してコールした場合、<function>rand</function> は 0 と
25-
<function>getrandmax</function> の間の擬似乱数(整数)を返します。
25+
<function>getrandmax</function> の間の擬似乱数(整数)を返します。
2626
例えば、5 から 15 まで(両端を含む)の乱数を得たい場合、
2727
<literal>rand(5, 15)</literal> とします。
2828
</simpara>
2929
&caution.cryptographically-insecure;
3030
<note>
3131
<simpara>
32-
(Windows のような)いくつかのプラットフォームでは、<function>getrandmax</function>
33-
は 32767 と小さな値となっています
32+
PHP 7.1.0 より前のバージョンでは、(Windows のような)いくつかのプラットフォームにおいて
33+
<function>getrandmax</function> は 32767 と小さな値となっていました
3434
32767 より広い範囲にしたい場合、
3535
<parameter>min</parameter> および <parameter>max</parameter> を指定することで、
3636
これより大きな範囲の乱数を生成することができます。
@@ -102,7 +102,7 @@
102102
<row>
103103
<entry>7.1.0</entry>
104104
<entry>
105-
<function>rand</function> は、<function>mt_rand</function> の
105+
<function>rand</function> は、<function>mt_rand</function> の
106106
<link linkend="migration71.incompatible.rand-srand-aliases">エイリアスになりました。</link>
107107
</entry>
108108
</row>
@@ -143,9 +143,9 @@ echo rand(5, 15), "\n";
143143
<warning>
144144
<para>
145145
<parameter>min</parameter> から <parameter>max</parameter>
146-
までの幅を <function>mt_getrandmax</function> の範囲内におさめる必要があります。
146+
までの幅を <function>getrandmax</function> の範囲内におさめる必要があります。
147147
つまり、(<parameter>max</parameter> -
148-
<parameter>min</parameter>) &lt;= <function>mt_getrandmax</function>
148+
<parameter>min</parameter>) &lt;= <function>getrandmax</function>
149149
でなければいけないということです。この範囲をこえてしまうと、
150150
<function>rand</function> が返す値のランダム性が、
151151
低品質になってしまいます。

0 commit comments

Comments
 (0)