1. Cara Membuat Angka Acak di C: Fungsi rand
1.1 Apa itu Fungsi rand?
Fungsi rand()
adalah fungsi untuk menghasilkan angka pseudo-acak di bahasa C. Angka pseudo-acak adalah urutan angka yang dihasilkan oleh algoritma yang telah ditentukan sebelumnya, dan bukan angka acak sejati, tetapi sudah cukup untuk penggunaan umum. rand()
mengembalikan bilangan bulat dalam rentang 0 hingga 32767【8†source】. Rentang ini mungkin bervariasi tergantung sistem, tetapi biasanya nilai ini.
1.2 Cara Dasar Menggunakan Fungsi rand
Untuk menggunakan fungsi rand()
, Anda perlu menyertakan stdlib.h
. Kode berikut adalah contoh dasar penggunaan fungsi rand()
untuk menghasilkan angka acak.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int randomNumber = rand();
printf("Generated random number: %d
", randomNumber);
return 0;
}
Ketika kode ini dieksekusi, angka acak antara 0 dan 32767 akan ditampilkan. Namun, kelemahannya adalah setiap kali dieksekusi, angka acak yang sama akan dihasilkan. Ini akan dibahas nanti.

2. Cara Menyesuaikan Rentang Angka Acak
2.1 Membatasi Rentang Menggunakan Modulo
Saat membuat angka acak, seringkali dibutuhkan nilai dalam rentang tertentu. Misalnya, jika Anda ingin menghasilkan angka acak dari 1 hingga 100, Anda dapat menyesuaikan rentang dengan menggunakan operator modulo %
pada keluaran fungsi rand()
.
int numberInRange = rand() % 100 + 1; // Menghasilkan angka acak dari 1 hingga 100
Dalam contoh ini, sisa bagi dari keluaran rand()
dibagi 100 diambil, lalu ditambahkan 1 untuk menghasilkan angka acak dari 1 hingga 100. Dengan menggunakan modulo, Anda dapat dengan mudah menghasilkan angka acak dalam rentang apa pun yang diinginkan【8†source】.
2.2 Menghasilkan Angka Acak dengan Rentang Tertentu
Jika Anda ingin menentukan rentang angka acak dengan lebih fleksibel, Anda juga dapat membuat dan menggunakan fungsi. Berikut adalah contoh fungsi untuk menghasilkan angka acak dalam rentang nilai minimum dan maksimum yang ditentukan.
int getRandomNumber(int min, int max) {
return rand() % (max - min + 1) + min;
}
Dengan menggunakan fungsi ini, Anda dapat menghasilkan angka acak dalam rentang yang diinginkan, seperti getRandomNumber(1, 100)
.
3. Mengubah Pola Angka Acak dengan Fungsi srand
3.1 Apa itu Fungsi srand?
Jika fungsi rand()
digunakan apa adanya, pola angka acak yang sama akan dihasilkan setiap kali program dieksekusi. Ini adalah karakteristik angka pseudo-acak, yang nyaman untuk debugging tetapi bermasalah jika diperlukan angka acak yang praktis. Oleh karena itu, Anda dapat menggunakan fungsi srand()
untuk mengatur seed angka acak dan mengubah pola angka acak yang dihasilkan【7†source】【9†source】.
3.2 Cara Menggunakan Fungsi srand
Fungsi srand()
dipanggil sebelum fungsi rand()
untuk menentukan seed angka acak. Biasanya, srand((unsigned int)time(NULL))
digunakan untuk menentukan waktu saat ini sebagai seed.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
srand((unsigned int)time(NULL)); // Atur waktu saat ini sebagai seed
int randomNumber = rand();
printf("Generated random number: %d
", randomNumber);
return 0;
}
Dalam kode ini, pola angka acak yang berbeda akan dihasilkan setiap kali oleh srand()
. Karena time(NULL)
mengembalikan waktu saat ini dalam detik, adalah mungkin untuk mengatur seed yang berbeda setiap kali.

4. Contoh Pemanfaatan Angka Acak
4.1 Penggunaan Angka Acak dalam Game
Angka acak sering digunakan dalam pengembangan game. Misalnya, digunakan untuk mengatur posisi karakter secara acak atau menentukan probabilitas munculnya item. Berikut adalah contoh simulasi lemparan dadu.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
srand((unsigned int)time(NULL)); // Atur seed
int diceRoll = rand() % 6 + 1; // Menghasilkan angka acak dari 1 hingga 6
printf("Dice roll: %d
", diceRoll);
return 0;
}
Program ini menghasilkan angka acak dari 1 hingga 6 dan menampilkannya sebagai hasil lemparan dadu. Dengan menggunakan angka acak, Anda dapat dengan mudah mengimplementasikan elemen tak terduga dalam game.
4.2 Simulasi dengan Metode Monte Carlo
Angka acak juga digunakan dalam simulasi seperti Metode Monte Carlo. Metode Monte Carlo adalah teknik yang menggunakan angka acak untuk mengaproksimasi solusi masalah yang sulit dicari secara analitis. Misalnya, Anda dapat mengaproksimasi nilai Pi ($\pi$) menggunakan angka acak【9†source】.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int n_trials = 1000000;
int n_inside = 0;
double x, y, pi;
srand((unsigned int)time(NULL));
for (int i = 0; i < n_trials; i++) {
x = (double)rand() / RAND_MAX;
y = (double)rand() / RAND_MAX;
if (x * x + y * y <= 1) {
n_inside++;
}
}
pi = 4.0 * n_inside / n_trials;
printf("Approximated π: %f
", pi);
return 0;
}
Program ini adalah contoh Metode Monte Carlo yang mengaproksimasi Pi menggunakan titik acak. Ini menggunakan rand()
untuk menghasilkan angka acak dalam rentang 0 hingga 1 dan menggunakannya untuk mengaproksimasi luas lingkaran.

5. Poin Penting Fungsi rand dan srand
5.1 Memahami Angka Pseudo-Acak
Angka acak yang dihasilkan oleh fungsi rand()
di bahasa C adalah angka pseudo-acak. Ini bukan nilai yang benar-benar acak, tetapi dihitung berdasarkan algoritma internal, sehingga pola angka acak yang sama akan dihasilkan jika menggunakan seed yang sama. Ini nyaman untuk debugging, tetapi tidak cocok jika diperlukan keacakan penuh.
5.2 Kesalahan Umum
Kesalahan umum saat menggunakan angka acak termasuk tidak menggunakan srand()
atau salah memahami rentang keluaran rand()
. Penting untuk selalu mengatur seed dengan srand()
sebelum menggunakan rand()
, jika tidak, pola angka acak yang sama akan selalu dihasilkan. Selain itu, saat menyesuaikan rentang dengan rand() % n
, nilai n
juga dapat menyebabkan hasil yang berbeda dari yang diharapkan, jadi perlu diperhatikan.
Kesimpulan
Pembuatan angka acak di bahasa C digunakan dalam berbagai bidang seperti game dan simulasi. Dengan memahami cara menggunakan fungsi rand()
dan srand()
serta menghasilkan angka acak dengan benar, Anda dapat menambahkan elemen tak terduga ke dalam program Anda. Dengan mengacu pada artikel ini, silakan coba membuat program yang memanfaatkan angka acak.