След бурния работен ден, дойде време за програмистките простотии.
След леко обсъждане на random функциите, попаднахме на текст в официалния сайт на PHP за функцията mt_rand:
It uses a random number generator with known characteristics using the » Mersenne Twister, which will produce random numbers four times faster than what the average libc rand() provides.
Викам си, аз като по-прост винаги ползвам rand(), а тва щом е 4 пъти по-бързо, трябва да се провери.
Пукнах един цикъл до 100 милиона, като на всеки лууп ми връща рандом число от 0 до 9, като си записвам кое – колко пъти се е паднало, все пак да видим какви отклонения дава.
Ето резултатите:
rand();
153 секунди
[0] => 10000600
[1] => 10000623
[2] => 10000576
[3] => 10000620
[4] => 9997513
[5] => 10000644
[6] => 10000631
[7] => 10000613
[8] => 10000594
[9] => 9997586
mt_rand();
158 секунди
[0] => 9997674
[1] => 9997916
[2] => 9999332
[3] => 10002212
[4] => 9998813
[5] => 10001643
[6] => 9997000
[7] => 10006814
[8] => 10004464
[9] => 9994132
Ясно се вижда, че в тази ситуация, не само е по-бавен mt_rand(), ами дава и по-големи отклонения.
Пробвах скрипт и с произволно число от 0 до 999999, пак със 100 милиона луупа и времето, за което се изпълни беше сходно като разлика между двете.
За мен rand() си остава по-яката функция… пък и е по-кратка, ебаси…