Flashcentury
Twitter
Facebook
Linkedin
Rss
friendfeed
Asp`de Rastgele Sayi Üretmek (Randomize – Rnd)

Asp`de Rastgele Sayi Üretmek (Randomize – Rnd)

Yazar Hüseyin Kocak

Kategoriler: ASP

Asp`de rastgele sayi üretmek icin Randomize ve Rdn komutlarini kullaniyoruz. Görev olarak bazen cok karmasik bir uygulamayi yüklensede tesadüfi (rastgele) sayi üretmek Asp`de cok kolaydir.

Hemen ilk örnegimizi yapalim;

Dim rastgeleSayi
Randomize
rastgeleSayi = Rnd

response.write rastgeleSayi

iste bu kadar.

Isin mantigini anlatmak gerekirse;

ilk once Randomize komutunu yazmamamiz gerekiyor bu bir kuraldir yani rastgele sayi icin starti vermis oluyoruz sonraki adimda degiskenimizi Rnd `ye esitleyerek tesadüfi sayimizi elde ediyoruz.

Yalniz dikkat etmememiz gereken bir husus var; ürettigimiz bu sayi tamsayi veya büyük bir ihtimalle kesirli (küsüratli) sayi olabilir. Eger sadece tam sayi istiyorsaniz Int ve Round komutlarindan birini kullanarak sayimizi tam sayiya cevirebilirsiniz.

Dim rastgeleSayi
Randomize
rastgeleSayi = Rnd

response.write Int(rastgeleSayi)
'veya
response.write Round (rastgeleSayi)

Int ve Round komutlarindan kisaca bahsetmek gerekirse;

  • Int –> Bu fonksiyon ile sayinin kusuratini atabilirsiniz. Örnegin 158,675 gibi bir sayi 158 olarak dönüstürülür. yani kusurat atilir.
  • Round –> Round ise küsüratina göre tam sayiya dönüstürür. Örnegin 158,675 sayisi 159 olarak dünüstürülür veya 47,3 sayisi 46 olarak deger alir.

Son olarak bazende iki sayi araliginda bir deger olusturmak isteyebirsiniz.

Örnegin 50 ile 100 arasinda rastgele bir sayi üretmek istiyorum;

Dim rastgeleSayi, max, min, islem

max = 100
min = 50
islem = (max - min) + 1
Randomize
rastgeleSayi = int((Rnd * islem)+min)

response.write Int(rastgeleSayi)

yukaridaki örnegi tarayicinizda denerseniz ekranda 50 ile 100 arasi bir sayi yazdigini göreceksiniz. Yenile düğmesine tiklayarak tekrar tekrar test edebilirsiniz.

Buradaki iki sayi arsinda rastgele bir değer elde etmemizi sağlayan formul  (Rnd * 50) + 50 ‘dür. Bu formulün mantigini anlatmak gerekirse;

Sayımız en düsük olabileceği değere +50 ilave ediyoruz böylece sayımız 50 ‘nin altina düşmüyor.

Yukarıdaki formulde (rnd * 50) dikkatinizi çekmiştir  aslinda rastgele sayimiz 50 ile çarpilmiyor bunu bir kod formulu olarak düsünebilrsiniz. Çarpi isareti ( * ) sonrasinda en yüksek değeri belirtmeniz yeterli olacaktir.

Bu internet sitesi IntenseDebate yorum sistemini kullanıyor. Yorumlar henüz yüklenemedi, çünkü tarayıcınız JavaScript desteklemiyor veya yorumlar yeterince hızlı yüklenemiyor.

14 Yorum Comments For This Post I'd Love to Hear Yours!

  1. Anonim diyor ki:

    Oldukça faydalı bir çalışma benim için.
    Emeği geçen arkadaşalara teşekkürler…

  2. ömer diyor ki:

    güzel çalışma eline sağlık ama virgülü nasıl kaldıracağımız hakkında bilgi verebilirmisin

  3. Salih ESKİOĞLU diyor ki:

    bu kodda hata var arkadaşlar…
    rnd*100 komutu ile en fazla yüze kadar olan rakamı program rastgele üretiyor. buraya kadar ok. ancak +50 komutu ile üretilen sayıya 50 daha ekleniyor. program 1 sayısını üretirse üzerine 50 koyunca 51 eder. peki program 80 sayını ürettiğini düşünün.. 80+ 50= 130 eder. dolayısı ile program 50 ile 100 arasında rastgele bir sayı üretmiş OLMAZ. Kodu denedim. 130, 128, 146, 103 ürettiği rakamlar arasındaydı.

  4. flashcentury diyor ki:

    Evet Haklısın Salih ESKİOĞLU aslinda yukaridaki yorumda int ve round fonksiyonlarini anlatirken bu yanlisligi fark etmemisim 50 ile 100 arasinda bir sayi üretmek icin asagidaki yolu izlemek gerekiyor;

    max = 100
    min = 50
    islem = (max – min) + 1
    Randomize
    rastgeleSayi = int((Rnd * islem)+min)
    Sonuc= rastgeleSayi

  5. ugur diyor ki:

    arkadaşlar ben ürettiğim rastgele sayıların en büyüğünü nasıl elde edebilirim…acil yardım lütfen…

  6. flashcentury diyor ki:

    Rasgele ürettigin sayilardan en büyügünü bulabilmen için öncelikle örettiğin sayıları bir array içerisine almanız gerekiyor.

    Örneğin diyelimki 3 tane rastgele sayı ürettiniz;

    rasgeleSayılar=new Array("57","64","82" );
    sirala=rasgeleSayılar.sort( );

    Bu şekilde bir uyguladığınızda sirala isimli bir array oluşur ve küçükten büyüğe doğru sıralar ve siz arrayın 3. elemanını alarak en büyük sayıyı elde etmis olursunuz

    enbuyuksayı = sirala(2)

    Asap `de Array kullanimi için aşağıdaki linki inceleyebilirsiniz. http://www.flashcentury.net/asp-dizi-degiskenleri...

  7. nursen diyor ki:

    <body>
    <%
    randomize
    dim sayi
    sayi=int(rnd*10+1)
    response.write(sayi)
    %>
    </body>
    bu işlemdeki mantığı anlatırmısınız?r n d rastgele bir sayı ve 11 ile mi çarpılıyor.cevaplarsanız sevinirim şimdiden teşekkürler…

    • flashcentury diyor ki:

      bildiğiniz gibi rnd özel bir ASP fonksiyonudur. (rnd*10+1) gibi bir kodlama ASP 'ye rastgele bir sayı oldugunu fakat bu sayının alabileceği en yüksek sayının 10 olduğunu bildirir.

      Yani kesinlikle rasgele sayı ile çarpılma gibi bir durum yok (rnd*10) formulu 0 ile 10 arası bir sayı üretir. (rnd*10+1) gibi bir formul ise 1 ile 11 arası bir sayı üretir. Formulun sonundaki +1 minimum rakam olarak düşünebilirsin (en düşük rakam 0 olacağı için +1 ekleyerek minimum rakamı yükseltmiş oluyoruz)

  8. nursen diyor ki:

    cevabınız için çok tesekkür ederim inanın çok açıklayıcı ve anlasılır olmuş…..birde siz bilgisayar öğretmenimisiniz? sakıncası yoksa öğrenebilir miyim…

    • flashcentury diyor ki:

      Rica ederim yardımcı olabildiysem ne mutlu fakat size tavsiyem eğer ASP 'ye yeni başladıysanız bence PHP veya ASP.NET 'e yönelmeniz çünkü Microsoft ASP 'yi geliştirmeyi uzun zamandır durdurdu ve belki birkaç yıl içerisinde tamamen yok olup gidecek bu yüzden ASP 'ye yatırım yapmamanızı tavsiye ederim.

      Hayır bilgisayar öğretmeni değilim, sadece 10 seneden fazladır web programlama konusunda çalışsan bir programcıyım. Vakit buldukça deneyimlerimi paylaşıyorum…

  9. nursen diyor ki:

    Dim rastgeleSayi
    Randomize
    rastgeleSayi = (Rnd * 100) + 50
    rastgeleSayi = Int(rastgeleSayi)
    response.write (rastgeleSayip
    peki bu kodda ki parantez dışına yazılan 50 sayısı ne için kullanılıyor bu da 50 ile 100 arası bir sayımı üretiyor….parantez dışına yazılması kafamı karıştırdı.

    • flashcentury diyor ki:

      Evet (Rnd * 100) + 50 ile (Rnd * 100 + 50) aynı sonucu veriyor fakat (Rnd * 100) + 50 haliyle daha anlaşılır bir sonuç veriyor fakat bu formul 50 ile 100 değil 50 ile 150 arasında bir sonuç verir.

      Aşağıdaki gibi bir folmul hem anlaşılır hemde düzenlemesi kolay olabilir.

      max = 100
      min = 50
      islem = (max – min) +1
      Randomize
      rastgeleSayi = int((Rnd * islem)+min)
      response.write (rastgeleSayi)

      yani şöyle bir işlem oluyor;

      max = 100
      min = 50
      islem = (100 – 50) —–> (50 sonucu cıkıyor)
      Randomize
      rastgeleSayi = int((Rnd * 50)+50) —-> (farzedinki rastgele sayı 15 oldu (15+50=65) sonucu cıkıyor)
      response.write (rastgeleSayi) —> (ve ekranda 65 rakamı gösteriliyor)

      Yukarıdaki formulde rastgele sayı en fazla 50 olabilir (50+50=100 sonucu cıkar)
      En düşük 0 olabilir (0+50=50) sonucu çıkar yani maxsimum 100 minimum 50 rakamlarını elde ederiz…

Leave a Comment Here's Your Chance to Be Heard!

29 Ekim 2008

Etiketler: , , , , , , , , , ,

Benzer Yazılar