Menghasilkan Bilangan Bulat Acak Dengan ActionScript 3.0

Bilangan bulat acak merupakan sesuatu yang akan sering dipakai saat berurusan dengan animasi yang melibatkan coding, apalagi kalau berurusan dengan pembuatan game. Penguasaan terhadap topik kecil ini akan sangat berguna.

Fungsi penghasil bilangan acak yang disediakan pada ActionScript 3.0 akan menghasilkan suatu bilangan desimal acak dari rentang 0 hingga 1. Masalahnya adalah, bagaimana jika kita ingin mendapatkan suatu bilangan bulat acak dari rentang tertentu?

Mari berlogika terlebih dahulu, sebelum memulai coding.

Saya ingin menghasilkan suatu bilangan bulat acak, sedangkan fungsi matematika yang disediakan hanya menghasilkan bilangan desimal acak dari 0 hingga 1. Dengan kata lain, jika saya mengalikan bilangan desimal acak tersebut dengan suatu bilangan N kemudian dibulatkan, maka tentu saja, saya akan mendapatkan suatu bilangan bulat dengan nilai maksimal N (karena nilai maksimal yang muncul adalah 1, berarti 1 * N = N) dan nilai minimum 0 (karena 0 * N = 0).

Jika nilai acak yang muncul ada di antara 0 dan 1, maka tentu saja bilangan tersebut, akan berada pada rentang 0 sampai N. Berbekal logika ini, kita bisa menghasilkan suatu bilangan bulat acak.

function generateRandomNumber(min:Number, max:Number):Number {
    return Math.floor(Math.random()*(1 + max - min)) + min;
}

Ada apa dengan fungsi di atas? Mari kita analisis. Fungsi ini akan mengembalikan nilai pembulatan (dengan menggunakan fungsi floor) dari hasil kali bilangan acak dari fungsi Math.random() (yang dimiliki oleh ActionScript 3.0), dengan suatu bilangan yang menjadi rentang dari bilangan bulat yang diinginkan.

Untuk melakukan ujicoba terhadap keluaran dari fungsi tersebut, pembaca yang baik bisa menggunakan contoh kode berikut. Buka Adobe Flash yang pembaca miliki, buat Flash Document dengan ActionScript 3.0 dan ketikkan kode actions berikut di frame 1.

function generateRandomNumber(min:Number, max:Number):Number {
    return Math.floor(Math.random()*(1 + max - min)) + min;
}

var myTimer:Timer = new Timer(1000);

myTimer.addEventListener(TimerEvent.TIMER, myTimer_Tick);
myTimer.start();

function myTimer_Tick(evt:TimerEvent):void {
    trace(generateRandomNumber(1, 100));
}

Kode di atas akan menciptakan sebuah Timer yang akan dieksekusi setiap 1 detik, dan menghasilkan suatu bilangan acak di tiap eksekusinya. Lihat di panel output untuk melihat hasilnya.

Semoga bermanfaat.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s