Rabu, 01 April 2015

Membuat angka Random di C++

Untuk membuat angka random memang cukup mudah. Kita cukup memanggil fungsi rand() di c++ seperti pada contoh dibawah :


int main(){
   cout<<rand();
   return 0;
}

Kode  diatas akan menghasilkan sebuah angka random yang tidak memiliki batas (dari 0 sampai seterusnya).

Jika kita ingin menampilkan beberapa angka random dengan batas tertentu dan tidak menginginkan ada angka 0 misalnya kalo kita ingin mengundi sebuah dadu  kita bisa menggunakan kode ini





int main(){
  for(int x=0;x<5;x++)
    cout<<1+(rand()%6)<<” ”; //gunakan header  #include <cstdlib> utk fungsi rand
	return 0;
 }


Maka outputnya kalo dikomputer saya seperti ini : 6 6 5 5 6

 1+rand()%6  artinya komputer akan memberikan angka random taruhlah 1234 kemudian dibagi 6 dan sisa pembagiannya ditampilkan yaitu antara angka 0 – 5. Karena dadu tidak memiliki nilai 0 dan kita butuh angka 6, maka setiap nilai sisa pembagian kita tambah satu sehingga jika muncul angka 0=1 dan 5=6.

Perlu diingat bahwa tiap komputer memiliki algoritma yang berbeda untuk membuat angka random. Dan  kode diatas akan menampilkan kumpulan angka random yang akan terus sama berapa kali pun programnya dirun. jadi dikomputer saya akan terus : 6 6 5 5 6 .

Jika kita ingin angka randomnya mendapatkan angka berbeda ketika kita gunakan fungsi random, kita bisa tambah dengan fungsi srand(bibit). Nah dengan fungsi  ini kita akan menaruh bibit yang akan menentukan pengacakan angkanya. Dimana tiap bibit menghasilkan angka random yang berbeda dan tidak akan berubah.

Jadi misal :
srand(3)  = 2 3 1 2 4
srand (2) = 4 3 5 2 1 dst 

nah kalo kita mau agar angkanya terus berubah kita cukup menaruh srand(time(0)) dimana tiap detik angka/bibitnya akan terus berubah sehingga angka acak yang dihasilkan juga akan terus berubah. Contoh :



int main(){
  srand(time(0)); // gunakan header #include <cstdlib> dan #include <ctime>
  for(int x=0;x<5;x++)
    cout<<1+(rand()%6)<<” ”;
	return 0;
 }

4 komentar:

  1. Makasih banget gan! Berguna nih buat tugas akhir. Sukses selalu gan

    BalasHapus
  2. makasih yak sama nih tentang srand() dan rand() bilangan random disini

    BalasHapus
  3. Komentar ini telah dihapus oleh pengarang.

    BalasHapus