Rand() % 14: Mendedahkan Misteri Nilai Berulang
Dalam pengaturcaraan, fungsi rand() biasanya digunakan untuk menjana rawak nombor. Walau bagaimanapun, sesetengah pengguna telah menghadapi isu yang menarik di mana ungkapan rand() % 14 secara konsisten menghasilkan hanya 6 atau 13.
Untuk memahami tingkah laku ini, mari kita mendalami cara kerja rand(). Ia menggunakan algoritma Mersenne Congruential Generator (MCG) Apple, yang melibatkan pengganda tertentu. Malangnya, pengganda ini boleh dibahagi dengan 7, menyebabkan tingkah laku tidak menentu apabila menjana nombor rawak dalam julat terhad.
Secara khusus, nombor rawak pertama yang dijana selepas memanggil srand() akan mempamerkan hanya satu bit modulo entropi 14. Ini bermakna ia boleh menganggap hanya dua nilai yang mungkin: 6 atau 13.
Untuk menyelesaikan isu ini, ada penyelesaian mudah. Hanya panggil rand() beberapa kali dan buang keputusan untuk memperkenalkan kerawak. Ini memastikan bahawa nombor rawak pertama yang digunakan dalam rand() % 14 tidak dipengaruhi oleh pembenihan awal.
Atas ialah kandungan terperinci Mengapakah `rand() % 14` Kadangkala Hanya Mengembalikan 6 atau 13?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!