Terkadang kita diminta membangkitkan bilangan random, misalnya pecahan dari nol sampai 10 dengan interval 0.5. Fungsi bawaan matlab yang tersedia adalah rand(), sehingga jika maksimal angka 10 maka cukup dengan mengalikan rand()*10 akan diperoleh angka sembarang dari nol hingga 10.
- rand()*10
- ans =
- 2.6297
Jika ingin berinterval tiap 0.5 maka secara logika harusnya 2.5 karena lebih dekat ke 2.5 dibanding 2.0 atau 3.0. Langkah termudah adalah dengan menggunakan bantuan if-else. Jalankan instruksi berikut di command window maka akan diperoleh 2.5.
- angka=2.6297;
- steps=0.5;
- baseangka=floor(angka);
- pecahan=angka-floor(angka);
- upper=abs(steps-pecahan);
- buttom=abs(0-pecahan);
- if upper<buttom
- newangka=baseangka+steps
- else
- newangka=baseangka
- end
Kebetulan basis angkanya integer dimana untuk contoh di atas angka 2. Bagaimana jika intervalnya tiap 0.05? Jika angka 2.6297 maka tentu saja basisnya menjadi 2.6 (bukan angka 2 lagi). Logika sederhananya adalah dengan metode di atas, hanya saja basis angka dikalikan 10 (agar koma bergeser ke satu digit di kanan koma), tetapi jangan lupa untuk membagi lagi dengan 10 di akhir prosesnya.
- angka=2.6297;
- angka=angka*10;
- steps=0.5;
- baseangka=floor(angka);
- pecahan=angka-floor(angka);
- upper=abs(steps-pecahan);
- buttom=abs(0-pecahan);
- if upper<buttom
- newangka=(baseangka+steps)/10
- else
- newangka=baseangka/10
- end
Hasilnya:
-
newangka =
-
2.6500
Kombinasikan dengan fungsi rand(), misalnya membangkitkan 5 bilangan random berinterval 0.05:
-
initial=[];
-
for i=1:5
-
angka=rand()*10;
-
angka=angka*10;
-
steps=0.5;
-
baseangka=floor(angka);
-
pecahan=angka-floor(angka);
-
upper=abs(steps-pecahan);
-
buttom=abs(0-pecahan);
-
if upper<buttom
-
newangka=(baseangka+steps)/10;
-
else
-
newangka=baseangka/10;
-
end
-
angka=[initial;newangka];
-
initial=angka;
-
end
Hasilnya adalah rentetan bilangan random sebanyak lima buah dengan interval 0.05 di bawah ini (hasil berubah-ubah karena random). Semoga bermanfaat.
-
angka =
-
5.2500
-
4.1500
-
6.5500
-
6.2500
-
2.9000