Rabu, November 20, 2019

rand() dan srand() pada bahasa C dan C++

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 dijalankan. Misal melakukan generate lima angka acak pada bahasa C dengan bantuan dari fungsi rand() dalam sebuah looping, maka setiap kali dilakukan kompilasi dan program dijalankan maka output yang dihasilkan adalah sama sesuai dengan urutan angka.

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.

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

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.

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.

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

Bagaimana srand() dan rand() berkaitan satu sama lain?
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().





Related Posts

rand() dan srand() pada bahasa C dan C++
Oleh

"semoga yang memberikan komentar diberikan berkah kebaikan dari Allah, dijauhkan dari kejahatan, dan diberikan pahala ilmu dan amal jariyah dari sepenggal kata yang ia tinggalkan amiin :) "