|
Tesadüfî
Sayı
Bilgisayarın matematik işlemlerde, özellikle istatistik
hesaplamalarla kullanılması tesadüfî (rastlantısal) sayı üretmeyi
gerekli kılmıştı. Fakat daha sonra bilgisayar oyunları bu işlemi
adeta zorunla hale getirdi. Rastlantısal sayı, bir dizide tekrar
etmesi belirli bir düzene tabi olmayan sayı demektir. Bilgisayar
yokken, tesadüfî sayı tabloları matematikçiler tarafından uzun
uğraşlarla üretilirdi.
VBScript, bu amaçla Visual Basic'in Randomize ve
Rnd komutlarını almıştır. Randomize, tesadüfî sayı
üretme sürecini başlatır; Rnd da bu sayıyı size verir.
Kodunuzda bir yerde Rnd kullanacaksınız, ondan önce bir
yerlerde mutlaka Randomize komutunun yer alması gerekir.
Bunun bir uygulaması şu olabilir:
|
|
<% OPTION EXPLICIT
%> <HTML> <% Dim
TesadufiSayi Randomize TesadufiSayi =
Rnd %> <%=TesadufiSayi%> </HTML>
| Bu
dosyayı tesadufi.asp
adıyla kaydedip çalıştırın; Browser'ın Yenile düğmesini her
tıkladığınızda ekranda yeni bir sayı göreceksiniz. Bu sayıların
rastlantısal olması, bir kere daha gelmeleri için hiç bir kural
(örneğin her rakamın 123 kerede bir gelmesi veya 1 milyon 245 bin
kerede bir gelmesi gibi) bulunmamasıdır. İşin tekniğini bilmek
isterseniz, VBScript, her Rnd komutu icra edildiğinde
bilgisayarın saatini öğrenir; içinden seçeceği bir rakamı son derece
karmaşık bir formülden geçirerek size bir rakam verir. bu rakam
daima 0 ile 1 arasında olur. "(Rnd*6)+1" formülü bize 1 ile 6
arasında (yani bir zarın değerlerinden her hangi biri), "(Rnd*13)+1"
formülü ise 1 ile 13 arasında (yani bir iskambil destesindeki kağıt
değerlerinden herhangi biri) bir değer verir. Fakat dikkat: bu
değerler tam sayı değildir!
Programımızın bütün işlemi Do döngüsü bölümünde yapılıyor
ve bilgisayarın bir tesadüfî sayı üretmesi esasına dayanıyor. Bunu
Randomize ve Rnd fonksiyonları ile yapıyoruz.
Rnd'un verdiği tesadüfî rakamı, iki ile çarpıyor ve çıkan
sayıyı 1 ile topluyoruz; böylece ortaya 1'den büyük 3'den küçük bir
kesirli rakam çıkmış oluyor (Neden?). Bu rakamı Int() fonksiyonundan
geçirerek, kesirinden kurtarıyoruz.
Tam Sayı Elde Etmek
için: Int ve Round
Rnd fonksiyonu ile ilgili yukarıdaki örneği yaptıysanız, dönen
sayının 0 ile 1 arasında, yani daima kesirli olduğunu görmüş
olmalısınız. Bazen bizim sayfalarımızdaki hesaplamalar veya
veritabanından alınan değerler de kesirli olabilir. Örneğin
öğrencilerin not ortalamalarını hesaplattırırken VBScript size sonu
gelmez kesirler verecektir. Oysa çoğu zaman bu rakamların ya yukarı
"yuvarlanması", ya da sadece tam sayı bölümü gerekir. VBScript'te
Int() fonksiyonu, bize bir sayının tam sayı bölümünü verir. Diyelim
ki elimizdeki KesirliSayi değişkeninin değeri 123,234567 olsun.
|
|
Tamsayi =
Int(KesirliSayi) |
işleminden sonra Tamsayi değişkenin değeri 123 olur. Fakat kimi
zaman bir sayının kesirli bölümünü böyle bıçakla kesip atmak işimize
gelmeyebilir. Round() fonksiyonu, kesirli bir sayıyı yukarı
veya aşağı "yuvarlayarak" tam sayı haline getirir. Bu kez ki
elimizdeki KesirliSayi değişkeninin değeri 5,6 olsun.
Tamsayi
= Int(KesirliSayi)
işleminden sonra Tamsayi
değişkenin değeri 6 olur. Kesirli sayı 56,2 ise, Round()
fonksiyonu bize 56 değerini verir.
Programımız, elde ettiği
ve Paraat değişkenine kaydettiği bu sayı 1 ise, Yazı gelmiş sayıyor;
ve Browser Penceresine "Yazı!" yazıyor. Bu arada yapılan atış
sayısını kaydettiğimiz Atis ve gelen tura sayısını tuttuğumuz Tura
değişkenlerinin değeri bir arttırılıyor. ParaAt değişkeninin değeri
başka bir şeyse (ne olabilir?), programımız bu kez tura geldiğine
hükmediyor ve Browser penceresine "Tura!" yazıyor. Do döngüsü, Tura
gelen atışların sayısı 3 oluncaya kadar devam ediyor. Çünkü
Do döngüsünü While Tura < 3 (Tura 3'den az iken)
deyimi ile çalıştırıyoruz. Ve program sonunda 3 tura gelinceye kadar
kaç atış yaptığını yazıyor.
|