唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

PHP 7.1 で mt_rand() の間違った実装が直るらしい(しかも rand() が mt_rand() になるらしい)

前にこんな記事を書きました

sucrose.hatenablog.com

Twitterで見かけたのですがPHP 7.1で直る予定らしいです


ドキュメントに「mt_srand() のオプションの第二引数に MT_RAND_PHP を指定すると、これまでの挙動 (間違った実装) を維持できます」と書いてあります

mt_rand() のデフォルトが、修正版のメルセンヌ・ツイスタ アルゴリズムを使うようになりました。mt_srand() の結果に依存するコードを書いていた場合は、mt_srand() のオプションの第二引数に MT_RAND_PHP を指定すると、これまでの挙動 (間違った実装) を維持できます

http://php.net/manual/ja/migration71.incompatible.php#migration71.incompatible.fixes-to-mt_rand-algorithm


また別件ですが同じページにrand()とsrand()が PHP 7.1 ではmt_rand()とmt_srand()のエイリアスになるという個人的には結構驚きな事が書かれています
rand()の一貫性はオプションとかで保たれないんでしょうか(?)

rand() と srand() は、それぞれ mt_rand() と mt_srand() のエイリアスになりました。つまり、 rand()、shuffle()、 str_shuffle()、array_rand() の出力がこれまでのバージョンとは変わるということです。

http://php.net/manual/ja/migration71.incompatible.php#migration71.incompatible.rand-srand-aliases