Penjelasan dan Penggunaan Bilangan Random, Rand(), Srand() Pemrograman C++ ~ Coding IsmyNR - Cara Dan Contoh Pemrograman

Penjelasan dan Penggunaan Bilangan Random, Rand(), Srand() Pemrograman C++

Dalam C++ kita bisa menggunakan dan menampilkan bilangan secara random, dengan menggunakan library dari stdlib.h agar kita bisa membangkitkan bilangan random/acak tersebut, code yang akan kita gunakan untuk membuat angka acak/random adala rand() dan srand(),
Membuat angka random c++

Kenapa kita harus tau rand() ? karena pasti kita akan membutuhkannya, misalkan kita ingin membuat program yang mengharuskan menggunakan angka acak untuk membuat program lempar dadu, jika di implementasikan :
  • Sebuah dadu hanya ada 1-6 angka saja, 
  • Ketika kita lempar dadu tersebut pasti memunculkan angka misal 3, lalu kita lempar lagi misal 6 dst... 
  • Otomatis itu angka random kan?? tidak tau habis ini bilangan apa yang akan muncul.
Makanya kita membutuhkan angka random ini untuk membuat program lempar dadu ini, di blog ini ada beberapa contoh progam sudah jadi, silahkan anda lihat di artikel Program Koclokan Nama Anggota  Arisan Pemrograman C++

1. Penjelasan dan Penggunaan Rand() dalam C++
Fungsi rand() digunakan dalam C++ untuk menghasilkan angka acak atau random, untuk menuliskan program random ini, langsung menggunakan rand() juga sudah menghasilkan angka random :
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    int random, random2, random3;
    random = rand();
    random2 = rand();
    random3 = rand();
    cout << "Acak 1 = " << random << endl;
    cout << "Acak 2 = " << random2 << endl;
    cout << "Acak 3 = " << random3 << endl;
}
Outputnya :
Acak 1 = 41
Acak 2 = 18467
Acak 3 = 6334

Padahal kita tidak menyimpan angka dalam variabel random tersebut, tapi muncul angka angka acak yang sudah di masukan komputer ke variabel random, random2, dan random3 tersebut,

Tetapi ada suatu kelemahan yang tidak kita inginkan, karena tadi sudah dikatakan, komputer akan menyimpan angka random tersebut dalam variebel random, random2, dan random3 yang sudah kita buat,

Jika kita menghasilkan urutan angka acak dengan fungsi rand () saja seperti di atas, itu akan membuat urutan yang sama lagi dan lagi setiap kali program dijalankan, coba anda jalankan program di atas sekali lagi, pasti muncul angka sama.

Katakanlah jika kita menghasilkan 5 angka acak dalam C++ dengan bantuan rand() dalam satu lingkaran, maka setiap kali kita mengkompilasi dan menjalankan program, output kita harus berupa urutan angka yang sama.

Kalo masalah itu nanti saja akan dijelaskan selanjutnya, sekarang bagaimana memanipulasi rand() agar sesuai dengan keinginan kita.

Jika dalam program di atas itu angka yang di hasilkan adalah angka tidak beraturan (1 sampai tak terhingga), kita bisa membatasi sampai berapakah angka random yang ingin di hasilkan, yaitu dengan modulus(%) :
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    int random, random2, random3, random4, random5;
    random = rand()%4;
    random2 = rand()%4;
    random3 = rand()%4;
    random4 = rand()%4;
    random5 = rand()%4;
    cout << "Acak 1 = " << random << endl;
    cout << "Acak 2 = " << random2 << endl;
    cout << "Acak 3 = " << random3 << endl;
    cout << "Acak 4 = " << random4 << endl;
    cout << "Acak 5 = " << random5 << endl;
}
Output :
Acak 1 = 1
Acak 2 = 3
Acak 3 = 2
Acak 4 = 0
Acak 5 = 1

Kode di atas akan membatasi sejumlah angka yang muncul, misalkan sampai pada angka 3, jadi hanya 0, 1, 2, 3 saja, manipulasi saja randomnya dengan rand()%4.

Ket : misalkan punya variabel int random, angka acak sudah didapatkan di komputer, rand() = 90, lalu kita memerintahkan ke komputer "saya mau hasil rand() dimoduluskan 4 " jadi kodenya [rand() % 4] otomatis 90%4 = 2 itulah hasil modulusnya, maka nanti nilai dalam variabel random = 2 dari hasil rand() modulus 4.
Ingat : Menghitung modulus[%] yaitu sisa dari hasil bagi, misalkan 8 : 3 = 2, nah sisa dari pembagiannya berapa ?? yaitu 2, itulah hasil modulusnya[%]
Berikut beberapa hasil modulus 4 :
1%4 = 1
2%4 = 2 
3%4 = 3
4%4 = 0
5%4 = 1
8%4 = 0
90%4 = 2
12980%4 = 0
873%4 = 1
3674923%4 = 3

Dari kesimpulan di atas kita bisa memanipulasikan rand() sampai batas angka 3 dengan rand()%4, atau misalkan ingin memanipulasikan rand() sampai batas angka 89 dengan rand%90, anda bisa memanipulasikanya sesuai logika yang ditangkap.

Contoh dengan menggunakan looping :
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    int random;
    for(int a=0;a<=10;a++){
        random = rand()%10;
        cout << "Acak " << a << " = " << random << endl;
    }
}
Output :
Acak 0 = 1
Acak 1 = 7
Acak 2 = 4
Acak 3 = 0
Acak 4 = 9
Acak 5 = 4
Acak 6 = 8
Acak 7 = 8
Acak 8 = 2
Acak 9 = 4
Acak 10 = 5

2.  Penjelasan dan Penggunaan Srand() Pemrograman C++
Fungsi srand () menetapkan titik awal untuk menghasilkan serangkaian bilangan bulat pseudo-acak. Jika srand () tidak dipanggil, rand () seed diatur seolah-olah srand (1) dipanggil pada saat program dimulai. Nilai lain untuk benih menetapkan generator ke titik awal yang berbeda.

Kedua code tersebut sangat berkaitan dengan pembangkitan bilangan acak pada program yang kita buat karena rand() untuk membuat angka random dan srand() untuk menghasilkan angka dari titik yang tergantung pada nilai yang kita masukan ke srand() tersebut.

Contohnya di code sebelumnya hanya menggunakan rand(), ada kelemahan ketika program dijalankan berulang ulang, nilai yang dihasilkan akan tetap sama, Jika ingin angka randomnya mendapatkan angka berbeda setiap kali dijalankan, cara mencegahnya sering kita temui dimana mana(internet) kita bisa menggunakan srand(time(0)) tentu jangan lupa men include kan library time.h :
#include <iostream>
#include <stdlib.h>
#include <time.h> // library untuk time
using namespace std;
int main()
{
    int random;
    srand(time(0));
    for(int a=0;a<=5;a++){
        random = rand()%4;
        cout << "Acak " << a << " = " << random << endl;
    }
}
Output pada run pertama :
Acak 0 = 3
Acak 1 = 1
Acak 2 = 1
Acak 3 = 2
Acak 4 = 1
Acak 5 = 1
Process returned 0 (0x0)   execution time : 0.495 s
Press any key to continue.

Run ke dua :
Acak 0 = 1
Acak 1 = 0
Acak 2 = 0
Acak 3 = 2
Acak 4 = 2
Acak 5 = 3
Process returned 0 (0x0)   execution time : 0.023 s
Press any key to continue.

Menghasilkan angka random yang kita inginkan, ketika run berkali-kali hasil pasti berubah, Karena Srand() memberikan fungsi acak benih baru, titik awal (biasanya angka acak dihitung dengan mengambil nomor sebelumnya (atau biji) dan kemudian melakukan banyak operasi pada angka tersebut untuk menghasilkan angka berikutnya.

Kode time(0) untuk memberikan waktu dalam hitungan detik sejak zaman Unix, yang merupakan benih "tidak dapat diprediksi" yang cukup bagus, dengan ini benih akan sama hanya sekali saja ketika program dijalankan,  kecuali Anda memulai program beberapa kali dalam waktu yang sama.

3. Manipulasi Angka Random ke dalam bentuk huruf Alpabet
Dengan mengetahui bagaimana cara membangkitkan angka random di c++ Anda bisa memanipulasinya menjadi huruf acak, berikut programnya :
#include <iostream>
#include <stdlib.h>
#include <time.h> // library untuk time
using namespace std;
int main()
{
    int random;
    string alpabet;
    srand(time(0));

    for(int a=0;a<=5;a++){
        random = rand()%26;
        alpabet = 'a' + random;
        
        cout << " [" << alpabet << "], ";
    }
}
Output :
 [m],  [w],  [g],  [t],  [w],  [p],
Process returned 0 (0x0)   execution time : 0.192 s
Press any key to continue.

Atau anda bisa membuat program acak angka dan huruf dalam 1 program dengan fungsi, jadi program lebih dinamis,
#include <iostream>
#include <stdlib.h>
#include <time.h> // library untuk time
#include <conio.h>
using namespace std;

int AcakAngka();
string AcakHuruf();
void print(int Random);
void print(string Random);

int main()
{
    int Angka, pil;
    string Huruf;
    srand(time(0));

    while(true){
        system("cls");
        cout << "Acak Huruf dan Angka ismynr.xyz" << endl;
        cout << "===============================" << endl;
        cout << "1. Acak Huruf " << endl;
        cout << "2. Acak Bilangan " << endl;
        cout << "Pilih >> ";
        cin >> pil;
        switch(pil){
            case 1:
                cout << endl;
                print(Huruf);
                break;
            case 2:
                cout << endl;
                print(Angka);
                break;
            default:
                cout << "\nMasukan Salah !" << endl;
        }getch();
    }
}
int AcakAngka(){
    int BilRandom;
    BilRandom = rand()%11;
    return BilRandom;
}
string AcakHuruf(){
    string HurufRandom;
    int jumlahHuruf;
    jumlahHuruf = rand()%27;
    HurufRandom = 'a' + jumlahHuruf;
    return HurufRandom;
}
void print(int Random){
    for(int a=0;a<=10;a++){
        Random = AcakAngka();
        cout << " [" << Random << "] ";
    }
}
void print(string Random){
    for(int a=0;a<=10;a++){
        Random = AcakHuruf();
        cout << " [" << Random << "] ";
    }
}
Output :
Acak Huruf dan Angka ismynr.xyz
===============================
1. Acak Huruf
2. Acak Bilangan
Pilih >> 1

 [s]  [p]  [v] 
[v]  [u]  [r]  [f]  [x]  [j]  [b]  [s]

Jika pilih 2 Outputnya :
Acak Huruf dan Angka ismynr.xyz
===============================
1. Acak Huruf
2. Acak Bilangan
Pilih >> 2

 [9]  [0]  [5]  [10]  [6]  [8]  [2]  [4]  [3]  [3]  [10]

Begitupun seterusnya, anda bisa membuat program ini menjadi lebih dinamis lagi atau anda jiga bisa membuat ide program lainya dengan memanfaatkan rand() dan srand(time(0)) ini.

tag:
membuat angka random c++
membuat huruf acak c++
contoh program membuat angka random dengan rand()
cara membagnkitkan bilangan random dengan c++
fungsi random c++
program pembangkit bilangan random
membuat bilangan random pada c++
contoh program random 
fungsi srand(time(0)) c++
fungsi rand() c++
membuat angka random di c++
program dadu 
program c++ dengan codebocks
logoblog

Share :

No comments:

Post a Comment

Berkomentarlah jika ada pertanyaan mengenai artikel ini, Kesan pembaca atau saran yang membangun blog ini.
*Gunakan akun google dan ceklis kolom (Notify Me) agar mendapatkan pemberitahuan balasan komentar

 
Back to Top