Havuzdan Rasgele Sayı Seçmek

Katılım
25 Ağustos 2004
Mesajlar
99
Sayın Forum Üyeleri,


Sorum kısaca şöyle; 1'den 5'e kadar sayıların olduğu bir havuzdan 5 kere tesadüfi sayıyı nasıl alabiliriz ? Yani her çektiğimiz sayı havuzdan çıkacak, dolayısıyla her sayıyı bir kere kullanmış olacağız ama sırası tesadüfi olacak.

Aslında kolay gibi ama aklıma bir yöntem gelmedi, sizlere de danışmak istedim.

Yardımlarınız için şimdiden teşekkürlerimi sunuyorum.

Saygılarımla.
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Belki Size Yol Göstere bilir

Sub sayicek()
sonsayı = InputBox("En Büyük Sayı")
For x = 1 To 1
Cells(x, 2).Value = Int(Rnd * sonsayı)
Next
End Sub

Umarım İşinizi Görmede Yardımcı olur.
 
Katılım
8 Aralık 2005
Mesajlar
123
=randbetween(1,5)
F9'a basın

(#NAME? hatasi vermesi durumunda:
Tools menu, click Add-Ins, select the Analysis ToolPak box, and then click OK.)
 
Katılım
25 Ağustos 2004
Mesajlar
99
Sayın Rakkas,

Öncelikle ayırdığınız zaman ve harcadağınız emek için çok teşekkür ederim.

Kodunuzu doğru mu yorumluyorum bilemiyorum ama anladığın kadarıyla; sıfır ile sonsayı arasında bir sayı değeri üretilecek ve bu durum x değeri kadar tekrarlanacak. Ancak, burada aynı değerin birden fazla üretilmesini engelleyen bir durum yok gibi geldi bana. Ancak, bir bakışı getirmesi hasebiyle tekrar teşekkürlerimi sunuyorum.
 
Katılım
8 Aralık 2005
Mesajlar
123
asagidaki kodu code module ekleyin
ustte solda general sagda randlotto secili olsun..

sonra =RandLotto(1;5;5) yazin..


Function RandLotto(Bottom As Integer, Top As Integer, _
Amount As Integer) As String
Dim iArr As Variant
Dim i As Integer
Dim r As Integer
Dim temp As Integer

Application.Volatile

ReDim iArr(Bottom To Top)
For i = Bottom To Top
iArr(i) = i
Next i

For i = Top To Bottom + 1 Step -1
r = Int(Rnd() * (i - Bottom + 1)) + Bottom
temp = iArr(r)
iArr(r) = iArr(i)
iArr(i) = temp
Next i

For i = Bottom To Bottom + Amount - 1
RandLotto = RandLotto & " " & iArr(i)
Next i

RandLotto = Trim(RandLotto)

End Function
 
Katılım
25 Ağustos 2004
Mesajlar
99
Sayın merken,

Size de yardım ve kodunuz için çok teşekkür ediyorum.

Kendi çözümümü şu şekilde gerçekleştirmeye çalıştım; 2. Worksheet'in A1-A5 hücrelerine sırayla 1,2,3,4,5 sayılarını yazdım ve rasgele bir tanesini seçip, seçtiğimi sildim, geriye kalanlardan tekrar seçtirdim. Belki biraz uzun oldu ama şimdilik işimi görüyor.
 
Katılım
8 Aralık 2005
Mesajlar
123
5 sayi icin olabilir ama daha fazlasi icin isiniz zor gorunuyor
kolay gelsin..
 
Katılım
25 Ağustos 2004
Mesajlar
99
Sayın merken,

Ben de Array kullanılabileceğini düşünmüş ama becerememiştim bu açıdan tekrar teşekkür etmek ve kodunuz içindeki "Application.Volatile" ifadesinin nasıl bir görev ifa ettiğini sormak istedim.

Saygılarımla.
 
Katılım
8 Aralık 2005
Mesajlar
123
mlakdag' Alıntı:
kodunuz içindeki "Application.Volatile" ifadesinin nasıl bir görev ifa ettiğini sormak istedim..
biraz ingilizce olacak ama:

The first line of code specifies Application.Volatile which makes this a "volatile" function. Each time the worksheet calculates the random numbers you have created will recalculate themselves so you'll get a different set. You can "freeze" the numbers by performing a Copy and Paste Special > Values on the range. But if you don't want that, just omit the line.

detayli bilgi: http://www.dicks-blog.com/archives/2004/06/22/volatile-functions/
 
Katılım
25 Ağustos 2004
Mesajlar
99
Sayın Merken ek bilgi için tekrar teşekkür ediyorum.

Saygılarımla.
 
Üst