1. Pendahuluan
Bahasa C adalah bahasa pemrograman yang banyak digunakan dalam pemrograman sistem tingkat rendah dan pengembangan game. Salah satu penerapan pentingnya adalah pembuatan angka acak, yang digunakan di berbagai situasi, seperti pembuatan elemen acak dalam game, simulasi, enkripsi, pembuatan data uji, dan masih banyak lagi.
Artikel ini akan menjelaskan cara menghasilkan angka acak dengan rentang tertentu dalam bahasa C, disertai contoh kode. Tujuannya adalah agar pembaca memahami cara kerja pembuatan angka acak dan dapat menerapkannya dalam program nyata.
2. Dasar Pembuatan Angka Acak di C
Dalam bahasa C, untuk membuat angka acak kita menggunakan pustaka standar <stdlib.h>
. Fungsi rand()
menghasilkan bilangan bulat acak antara 0 hingga RAND_MAX
(sekitar 2147483647), tetapi jika menggunakan nilai seed yang sama, hasil angka acaknya akan selalu sama setiap kali dijalankan.
Pembuatan Angka Acak Semu dan Pengaturan Nilai Seed
Konsep penting dalam pembuatan angka acak adalah nilai seed. Nilai ini menentukan titik awal urutan angka acak. Jika tidak diatur, program akan menghasilkan urutan angka acak yang sama setiap kali dijalankan. Untuk menghindarinya, kita menggunakan fungsi srand()
untuk mengatur seed, biasanya dengan fungsi time()
yang menggunakan waktu saat ini.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int)time(NULL));
printf("%d\n", rand());
return 0;
}
Dengan cara ini, setiap kali program dijalankan akan dihasilkan angka acak yang berbeda.
3. Cara Menghasilkan Angka Acak dengan Rentang Tertentu
Untuk mendapatkan angka acak dalam rentang tertentu, hasil dari fungsi rand()
perlu dimodifikasi secara matematis. Rumus dasarnya adalah:
rand() % (max - min + 1) + min
Rumus ini menghasilkan bilangan bulat acak antara min
dan max
.
Contoh Kode: Angka Acak dengan Rentang Tertentu
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int min = 1;
int max = 100;
srand((unsigned int)time(NULL));
int random_number = rand() % (max - min + 1) + min;
printf("Random number between %d and %d: %d\n", min, max, random_number);
return 0;
}
Kode ini menghasilkan angka acak antara 1 hingga 100, lalu menampilkannya.
4. Pembuatan Angka Acak Bertipe Desimal (Floating Point)
Untuk membuat angka acak bertipe desimal, kita menggunakan fungsi rand()
dan RAND_MAX
untuk melakukan skala nilai. Contohnya, untuk membuat angka acak antara 0.0 hingga 1.0:
Contoh Kode Angka Acak Desimal:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int)time(NULL));
double random_number = (double)rand() / RAND_MAX;
printf("Random number between 0.0 and 1.0: %f\n", random_number);
return 0;
}
Program ini menghasilkan angka acak antara 0 dan 1. Teknik ini bisa dikembangkan untuk membuat angka acak dalam rentang desimal lain, misalnya 0.0 hingga 5.0, dengan mengalikan hasilnya dengan 5.

5. Contoh Penerapan Angka Acak
Simulasi Lempar Dadu
Dalam pengembangan game, simulasi lempar dadu sering menjadi contoh penggunaan angka acak. Berikut contoh kode untuk menghasilkan angka acak antara 1 dan 6:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int)time(NULL));
int dice_roll = rand() % 6 + 1;
printf("Dice roll: %d\n", dice_roll);
return 0;
}
Pendekatan Monte Carlo untuk Mendekati Nilai Pi
Metode Monte Carlo adalah teknik yang menggunakan angka acak untuk memperkirakan solusi masalah yang sulit dihitung secara analitis. Berikut contoh untuk menghitung nilai π menggunakan angka acak:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
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\n", pi);
return 0;
}
Dengan metode Monte Carlo, angka acak digunakan untuk menghitung perkiraan nilai π. Teknik ini sering dipakai dalam simulasi fisika dan analisis probabilitas.
6. Kesimpulan
Artikel ini membahas cara menghasilkan angka acak dengan rentang tertentu di bahasa C, mulai dari penggunaan dasar rand()
dan srand()
, teknik penentuan rentang, pembuatan angka acak desimal, hingga contoh penerapannya. Pembuatan angka acak adalah keterampilan penting yang sering digunakan dalam pengembangan game, simulasi, dan berbagai bidang lainnya.
Gunakan teknik-teknik yang dibahas di sini dalam proyek Anda berikutnya untuk meningkatkan fleksibilitas dan dinamika program.