VBA Rnd Komutu (random) Özellikleri

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam Arkadaşlar,
Random komutu olan VBA.Rnd komutunu kullanıyorum. sizlere bir kaç sorum olacaktı;

1.sorum: VBA.Rnd(?) 'deki parantez içi nasıl kullanılıyor? Aşağıdaki gibi test kodları yazdım. parantez içindeki -8 sayısını değiştirdikçe değişik şeyler çıkıyor. mesela Clng(VBA.Rnd*3) sonucu for-next döngüsünde değişmez oluyor.

-8 sayısını örnektir. zaten () içi nasıl kullanılıyor bilmiyorum.

Kod:
Sub rnd_test()

Dim MyValue

For i = 1 To 50
MyValue = CLng(VBA.Rnd(-8)) & "-" & CLng(VBA.Rnd * 3)
deg = deg & vbLf & MyValue
Next

MsgBox deg

End Sub
2.sorum: VBA.Randomize nasıl kullanılıyor? çok denemeler yaptım kullanamadım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,034
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

RND fonksiyonu yalnız başına kullanılırsa 1 den küçük değerler üretir. Üretilen değerleri sıfırdan büyük ya da eşittir. Yani 0>= <1 aralığında benzersiz single değerler üretir.

1-6 arası tam sayılar üretmek için aşağıdaki kodu kullanabilirsiniz.

Kod:
Sub TEST_TAMSAYI()
    VBA.Randomize
    MsgBox CInt(Int((6 * VBA.Rnd()) + 1))
End Sub
INT komutu tamsayı için kullanılır. Kaldırırsanız ondalık sayılar üretebilirsiniz.

Kod:
Sub TEST_ONDALIK_SAYI()
    VBA.Randomize
    MsgBox 6 * VBA.Rnd() + 1
End Sub
 
E

ExcelF1

Misafir
Alternatif olsun. (1'den 10'a sayıları 1'er kez rasgele olarak seçer.)

Kod:
Sub Düğme1_Tıklat()
10  [A1:A10].ClearContents          'A1:A10 aralığını temizle
20  On Error Resume Next            'Hata ile karşılaşırsan devam et
30  Randomize                       'Her Start'ta rastgele sayı ile başla
40  For a = 1 To 10                 'a için 1 den 10 a say
50  b = Int(Rnd * 10) + 1           'b için 1-10 (dahil) bir sayı tut
60  [A1:A10].Find(b).Activate       'A1:10 arasında b'yi ara
70  If ActiveCell = b Then GoTo 50  'bulursan yeni sayı için 50'ye git
80  If b = 0 Then GoTo 50           'eğer b=0 ise yeni sayı için 50'ye git
90  Cells(a, 1) = b                 'b değerini hücreye yaz
100 Next a                          'For döngüsü sonu
End Sub
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Korhan Hocam,
Sorum yanlış anlaşılmış sanırım.
Ben Vba.Rnd() komutunu yazdıktan sonra (parantezin içi) nasıl kullanılıyor? onu merak ediyorum. Yani VBA.Rnd(bu kısmı).
ikinci sorum önce Randomize niye kullanılıyor?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,034
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Biraz araştırdım ve aşağıdaki bilgiye ulaştım.

Kaynak; Tıklayın...


2.6. Rnd Fonksiyonu

Rnd fonksiyonu rastgele sayılar üretmek için kullanılır.
Kullanımı aşağıdaki gibidir.

Sonuc = Rnd[sayı]

Burada sayı ifadesi herhangi pozitif veya negatif bir
değer alabilir. Bu parametre opsiyonel olup
tanımlanması zorunlu değildir. Eğer sayı negatifse Rnd
fonksiyonu sürekli olarak aynı sayıyı üretir. Eğer sayı
sıfırsa Rnd fonksiyonu en son üretilen sayıyı tekrar
üretir. Eğer sayı sıfırdan büyükse ya da ihmal
edilmişse sıradaki rastgele sayı üretilir.

Verilen bir aralık içinde herhangi rastgele bir tamsayı
üretmek için aşağıdaki kod kullanılabilir:

Sonuc = Int((üst_limit – alt_limit + 1) * Rnd + alt_limit)

Burada alt_limit ve üst_limit verilen aralığın sırasıyla
alt ve üst sınır değerleridir.
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Korhan hocam çok teşekkür ederim. Nihayet sorularımdan birini anlatabilmişim.
Peki randomize komutu niye kullanılıyor? ben rnd komutu öncesi kullandım. herhangi bir değişiklik görmedim.
(Not: yukarıda kaynak olarak verdiğiniz link şu an yazıştığımız konuyu açıyor)
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
...... Peki randomize komutu niye kullanılıyor? ben rnd komutu öncesi kullandım. herhangi bir değişiklik görmedim.
(Not: yukarıda kaynak olarak verdiğiniz link şu an yazıştığımız konuyu açıyor)
RND komutu dosyayı her açtınızda her seferinde aynı sırayla ve değerde sayılar üretir. Bunun önüne geçmek için rasgele sayı üretiminde, bilgisayarda sürekli çalışan ve her anı farklı tek bilgi olan sistem saatinin kullanılması gerekir. İşte Randomize komutu rasgele sayı üretmek için sistem saatinin dikkate alınmasını sağlar. Böylece sürekli aynı sayıların üretilmesinin önüne geçilmiş olur.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,034
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Haklısınız yanlış bağlantı vermişim. Üstteki mesajımdaki bağlantıyı güncelledim.

PDF olarak açılmaktadır. CTRL+F ile RND yazıp arama yaparsanız ilgili sayfa açılacaktır.

....
(Not: yukarıda kaynak olarak verdiğiniz link şu an yazıştığımız konuyu açıyor)
 
Katılım
30 Haziran 2012
Mesajlar
116
Excel Vers. ve Dili
2010 excel ingilizce
Altın Üyelik Bitiş Tarihi
26/03/2019
Teşekkürler

Selamlar,

Göstermiş olduğunuz yoğun ilgiden dolayı Levent hocamıza ve ExcelF1(4. mesaj)
yoldaşımıza teşekkür ederim.
Özellikle de Korhan hocamızın 8. mesajında verdiği PDF ile bizi fazlasıyla aydınlattığı için bir kez daha kendisine karşı minnettarım.
 
Üst