Lompat ke konten Lompat ke sidebar Lompat ke footer

Rand dan Srand Bahasa C dan Fungsinya

Angka acak dalam bahasa C dapat diciptakan dengan menggunakan fungsi rand() dan srand(), dimana perbedaan dari kedua fungsi tersebut akan dibahas pada materi berikut ini.


Sebelum memahami lebih dalam materi tentang Rand dan Srand Bahasa C dan Fungsinya, terlebih dahulu pelajari materi tentang: Perbedaan Karakter Kontrol dan Karakter Cetak Bahasa C, Input Data Bahasa C Menggunakan Fgets dan Gets Setelah Scanf, dan getchar_unlocked() Bahasa C dan Fungsinya.

Dalam bahasa pemrograman C, menghasilkan bilangan acak adalah tugas yang sering diperlukan dalam berbagai aplikasi, mulai dari permainan hingga simulasi. Untuk keperluan ini, C menyediakan dua fungsi utama, yaitu rand dan srand. Artikel ini akan membahas apa itu rand dan srand, bagaimana cara menggunakannya, serta contoh penggunaannya dalam kode.

satu, rand(); fungsi rand digunakan pada bahasa C untuk melakukan generate angka acak. Jika dilakukan generate angka acak secara berurutan dengan fungsi rand(), maka akan menghasilkan urutan yang sama pula lagi dan lagi setiap kali program tersebut dijalankan. Misalnya, melakukan generate lima angka acak pada bahasa C dengan bantuan dari fungsi rand() dalam sebuah looping, maka setiap kali dilakukan kompilasi program, maka output yang dihasilkan adalah sama sesuai dengan urutan angka.

Fungsi rand adalah fungsi standar dalam bahasa C yang digunakan untuk menghasilkan bilangan bulat acak. Fungsi ini didefinisikan dalam header file <stdlib.h>. Setiap kali rand dipanggil, ia akan mengembalikan bilangan bulat pseudo-acak antara 0 dan RAND_MAX. Nilai RAND_MAX adalah konstanta yang juga didefinisikan dalam <stdlib.h> dan biasanya bernilai 32767.

Baca Juga:

Sintak:
int rand(void);

returns a pseudo-random number in the range of 0 to RAND_MAX.
RAND_MAX: is a constant whose default value may vary
between implementations but it is granted to be at least 32767.

Contoh:

// Program bahasa C untuk

// menghasilkan angka acak

#include <stdio.h>

#include <stdlib.h>

 

// Driver program

int main(void)

{

 

// Program berikut akan

// menciptakan urutan angka

// acak dalam setiap program

// yang dijalankan

for(int i = 0; i<5; i++)

printf(" %d ", rand());

 

return 0;

}


Catatan: Program tersebut akan menghasilkan urutan sama dari angka acak setiap kali program dijalankan.

Output 1:
453 1276 3425 89

Output 2:
453 1276 3425 89

Output n:
453 1276 3425 89


Menggunakan rand untuk Rentang Tertentu: Seringkali, pengembang tidak hanya membutuhkan bilangan acak dalam rentang 0 hingga RAND_MAX, tetapi dalam rentang yang lebih spesifik, misalnya antara 1 dan 100. Untuk melakukan ini, pengembang bisa menggunakan operasi modulus dan penyesuaian sederhana.

Contoh:

#include <stdlib.h>

#include <stdio.h>

#include <time.h>


int main() {


// Mengatur seed

// berdasarkan waktu saat ini

srand(time(NULL));  


int min = 1;

int max = 100;

int random_number = 

(rand() % (max - min + 1)) + min;

    

printf(

"Bilangan acak antara 

%d dan %d: %d\n"

min, max, random_number);


return 0;}

Dalam contoh ini, rand() % (max - min + 1) menghasilkan bilangan acak antara 0 dan (max - min), kemudian ditambahkan min untuk menggeser rentang ke [min, max].

dua, srand(); fungsi srand() berfungsi untuk mengatur titik awal untuk menghasilkan sekumpulan pseudo-random integers. Jika srand() tidak dipanggil, maka rand() seed akan dipanggil ketika srand(1) telah dipanggil pada awal program. Setiap nilai seed yang disiapkan generator akan berbeda pada titik awal.

Fungsi srand digunakan untuk mengatur "seed" atau benih dari generator bilangan acak yang digunakan oleh rand. Dengan mengatur seed, pengembang dapat mengontrol urutan bilangan acak yang dihasilkan oleh rand. Seed biasanya diatur menggunakan waktu sistem agar menghasilkan urutan bilangan acak yang berbeda setiap kali program dijalankan.

Sintak:
void srand(unsigned seed);

Seeds the pseudo-random number generator used by rand()
with the value seed.

Catatan: pseudo-random number generator hanya akan menghasilkan seed sekali, sebelum rand() lainnya dipanggil, dan pada awal mula program dijalankan. Tidak harus dilakukan seed berulang setiap kali akan melakukan generate batch baru dari preudo-random number.

Praktek standar adalah dengan menggunakan hasil dari panggilan untuk srand(time(0)) sebagai seed. Namun, time() mengembalikan nilai time_t yang bervariasi dan karenanya preudo-random number bervariasi untuk setiap panggilan program.

Contoh:

// Program bahasa C untuk

// menghasilkan angka secara

// acak

#include <stdio.h>

#include <stdlib.h>

#include<time.h>

 

// Driver program

int main(void)

{

// Program berikut akan

// menciptakan ukuran angka

// secara acak setiap kali

// program dijalankan

 

// Menggunakan waktu saat ini

// sebagai sumber generator

// pengacakan angka

srand(time(0));

 

for(int i = 0; i<5; i++)

 printf(" %d ", rand());

 

return 0;

}


Catatan: Program tersebut akan menghasilkan urutan berbeda dari angka acak setiap kali program dijalankan.

Output 1:
453 1432 325 89

Output 2:
8976 21234 45 8975

Output n:
563 9873 12321 24132

Keterkaitan Antara srand() dan rand()

srand() adalah sekumpulan seed yang digunakan oleh rand untuk generate angka secara acak. Jika srand tidak dipanggil sebelum pemanggilan pertama rand, maka seolah-olah dilakukan pemanggilan srand(1) untuk mengatur seed menjadi satu. Sederhananya, srand() - Mengatur seed untuk fungsi rand().

Menggunakan rand dan srand dalam bahasa C memiliki beberapa kelebihan yang menjadikannya pilihan populer untuk menghasilkan bilangan acak dalam banyak aplikasi. Berikut adalah beberapa kelebihannya:
  • Kesederhanaan dan Kemudahan Penggunaan: Salah satu kelebihan utama dari rand dan srand adalah kesederhanaannya. Kedua fungsi ini sangat mudah digunakan dan dipahami, bahkan oleh pemrogram yang baru belajar C. Hanya dengan beberapa baris kode, pengembang sudah dapat menghasilkan bilangan acak.
  • Portabilitas: Fungsi rand dan srand merupakan bagian dari standar bahasa C (C Standard Library), sehingga fungsi tersebut didukung oleh hampir semua kompilator C. Ini membuat kode yang menggunakan rand dan srand sangat portabel dan dapat dijalankan di berbagai platform tanpa perlu modifikasi.
  • Kontrol atas Urutan Bilangan Acak: Dengan srand, pengembang dapat mengatur seed dari generator bilangan acak, yang memberi kontrol atas urutan bilangan acak yang dihasilkan. Ini sangat berguna dalam pengujian dan debugging, dimana pengembang mungkin ingin menghasilkan urutan bilangan acak yang sama setiap kali untuk mereproduksi kondisi tertentu.
  • Cepat dan Efisien: Fungsi rand dan srand dirancang untuk bekerja dengan cepat dan efisien. Fungsi tersebut memiliki overhead yang sangat kecil, sehingga cocok digunakan dalam aplikasi yang membutuhkan banyak bilangan acak dengan performa tinggi.
  • Fleksibilitas dalam Penggunaan Rentang: Walaupun rand menghasilkan bilangan acak dalam rentang 0 hingga RAND_MAX, pengembang dapat dengan mudah mengubah rentang ini sesuai kebutuhan dengan menggunakan operasi aritmatika sederhana. Ini memberikan fleksibilitas untuk menghasilkan bilangan acak dalam rentang yang spesifik.
  • Mendukung Banyak Aplikasi: Fungsi rand dan srand digunakan dalam berbagai jenis aplikasi, termasuk permainan, simulasi, pemodelan, kriptografi, dan lain-lain. Keberagaman penggunaan ini menunjukkan betapa serbagunanya kedua fungsi ini.

Kesimpulan

Fungsi rand dan srand dalam bahasa C adalah alat yang kuat untuk menghasilkan bilangan acak yang diperlukan dalam banyak aplikasi. Dengan rand, pengembang bisa mendapatkan bilangan bulat pseudo-acak, dan dengan srand, pengembang bisa mengontrol urutan bilangan acak tersebut dengan mengatur seed. Penggunaan kombinasi rand dan srand memungkinkan pembuatan bilangan acak yang lebih terprediksi dan terkontrol, yang sangat berguna dalam pengembangan perangkat lunak.

Dengan memahami dan menggunakan kedua fungsi ini dengan benar, pengembang bisa menciptakan aplikasi yang membutuhkan bilangan acak dengan cara yang efisien dan efektif.

7 komentar untuk "Rand dan Srand Bahasa C dan Fungsinya"

  1. Apakah keluaran nilai dari fungsi int rand(void) dalam bahasa C?

    BalasHapus
    Balasan
    1. Fungsi library bahasa C untuk int rand(void) akan mengembalikan bilangan acak semu dalam rentang nilai antara 0 hingga RAND_MAX. RAND_MAX adalah konstanta yang nilai default-nya mungkin berbeda-beda pada setiap implementasi progran, namun setidaknya angka yang diberikan adalah 32767.

      Hapus
  2. Secara sederhana, apa fungsi dari srand?

    BalasHapus
    Balasan
    1. srand() adalah fungsi yang digunakan untuk menginisialisasi bilangan acak semu yang dihasilkan oleh fungsi rand(). Fungsi tersebut tidak mengembalikan nilai apapun.

      Hapus
  3. Apa manfaat dari program pengacakan angka dalam bahasa C?

    BalasHapus
    Balasan
    1. Biasanya bermanfaat untuk pembuatan program yang berkaitan dengan sistem keamanan, biasanya sebuah sistem keamanan yang baik selain memiliki nama akun pengguna yang unik beserta password, juga selalu diikuti dengan beberapa kode unik tambahan yang disertakan setiap kali user atau pengguna akan memasuki akun tersebut, dan biasanya bersifat acak.

      Hapus
    2. untuk dapat menciptakan pola yang acak tersebut, dalam bahasa C salah satu alternatif yang dapat digunakan adalah menggunakan fungsi rand dan srand,

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -