Dalam tutorial belajar PHP kali ini kita akan bahas cara membuat angka acak atau angka random, termasuk membuat beberapa angka acak untuk di input ke dalam array.
Function rand() untuk Membuat Angka Acak
Bahasa PHP menyediakan function rand() yang bisa dipakai untuk men-generate angka acak. Function ini butuh 2 argument untuk menentukan awal dan akhir angka acak yang ingin dibuat.
Berikut contoh penggunaan dari function rand() PHP:
<?php echo rand(0,9)."<br>"; // 6 echo rand(5,15)."<br>"; // 11 echo rand(1,99)."<br>"; // 55 ?>
Angka yang di input sebagai argument ikut ke dalam hasil yang didapat (inclusive). Maksudnya, jika ditulis rand(0,9), maka angka yang di-generate tetap bisa menghasilkan angka 0 dan 9.
Bagaimana jika kita ingin angka acak dalam bentuk pecahan seperti 0.1 atau 0.05? Bisa dengan cara mengali hasilnya dengan angka pecahan:
<?php echo rand(0,9) * 0.1."<br>"; // 0.2 echo rand(0,9) * 0.01."<br>"; // 0.04 echo rand(0,9) * 0.001."<br>"; // 0.008 ?>
Fungsi rand() sebenarnya juga bisa dijalankan tanpa argument sama sekali. Jika ditulis seperti ini, PHP akan men-generate angka acak antara 0 hingga hasil dari function getrandmax().
Berikut percobaannya:
<?php  echo rand()."<br>";     // 1479735727  echo getrandmax()."<br>";  // 2147483647 ?>
Function mt_rand() untuk Membuat Angka Acak
Alternatif fungsi lain untuk men-generate angka acak di PHP adalah menggunakan function mt_rand(). Argument yang dibutuhkan tetap sama seperti fungsi rand():
<?php echo mt_rand(0,9)."<br>"; // 7 echo mt_rand(5,15)."<br>"; // 15 echo mt_rand(1,99)."<br>"; // 60 ?>
Jadi apa perbedaan antara fungsi rand() dengan mt_rand()?
Dulunya, fungsi mt_rand() lebih direkomendasikan agar mendapat sebaran angka acak yang lebih merata. Awalan kata "mt" sendiri berasal dari Mersenne Twister, sebuah algoritma untuk menghasilkan angka acak.
Akan tetapi sejak PHP 7, pemanggilan fungsi rand() secara otomatis akan menjalankan fungsi mt_rand(), sehingga kedua fungsi ini sudah tidak ada perbedaan lagi.
Function random_int() untuk Membuat Angka Acak
Untuk keperluan yang lebih sensitif, PHP punya fungsi random_int() untuk men-generate angka acak:
<?php echo random_int(0,9)."<br>"; // 5 echo random_int(5,15)."<br>"; // 9 echo random_int(1,99)."<br>"; // 14 ?>
Mengutip PHP Manual, fungsi ini disebut sebagai "cryptographically secure, uniformly selected integer", yang bisa disebut akan menghasilkan sebaran angka acak yang lebih bagus.
Akan tetapi fungsi random_int() butuh waktu pemrosesan yang lebih lama dibandingkan fungsi rand(), terutama jika perlu dipanggil ratusan kali. Sehingga untuk kebutuhan normal, sebaiknya tetap pakai fungsi rand() saja.
Membuat seed Angka Acak dengan srand()
Jika kita ingin angka acak yang dihasilkan tetap sama saat dijalankan ulang, itu bisa diatur dengan menggunakan angka seed yang sama.
Dalam teori angka acak, seed adalah sebutan untuk kondisi awal ketika men-generate angka acak. Jika seed yang digunakan sama, maka angka acak yang dihasilkan juga sama.
Untuk membuat seed, PHP menyediakan function srand(). Berikut contoh penggunaannya:
<?php srand(12345); echo rand(0,9)."<br>"; // 0 echo rand(5,15)."<br>"; // 9 echo rand(1,99)."<br>"; // 67 ?>
Di baris 2, saya menginput angka 12345 sebagai seed. Ketika dijalankan berulang kali, angka acak yang dihasilkan dari fungsi rand() antara baris 3-5 akan tetap sama.
Membuat Array Angka Acak
Sebagai penutup tutorial ini, kita akan coba membuat 10 angka acak yang disimpan ke dalam sebuah array. Berikut kode yang dimaksud:
<?php for ($i = 0; $i < 10; $i++) { $arr[]= rand(0,9); } foreach ($arr as $value) { echo $value." "; } ?>
Hasil kode program:
Di baris 2-4, terdapat perulangan for yang dijalankan sebanyak 10 kali. Dalam setiap iterasi, input hasil dari pemanggilan fungsi rand(0,9) ke dalam array $arr.
Kemudian di baris 6-8 isi dari array $arr ditampilkan kembali menggunakan perulangan foreach.
Dalam tutorial ini kita sudah membahas cara men-generate angka acak dalam bahasa pemrograman PHP. Implementasi dari angka acak ini cukup beragam, misalnya ketika membuat untuk aplikasi game.