1 ile 9 arasındaki sayıları dizi içine rastgele sırada almak...

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
1 ile 9 arasındaki sayıları bir dizi içine rastgele sırada almak için forum içerisinde aşağıdaki gibi bir kod buldum ama;
işin doğrusu daha pratik bir yöntem olabilir mi diye onu araştırıyorum.

Teşekkürler,
iyi akşamalr.

Kod:
Sub rastgele_19()
Randomize Timer
Dim Arr(1 To 9) As Integer
Dim col As Collection, i As Long, sat As Long, deg

Set col = New Collection

For i = 1 To 9
    col.Add i
Next

x = 1

For i = 1 To 9
    sat = Int(Rnd() * col.Count) + 1

        Arr(i) = col(sat)
        col.Remove sat

Next

End Sub
 

hgenc545

Altın Üye
Katılım
17 Aralık 2012
Mesajlar
133
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
21-08-2025
deneyin..

Sub rastgele_19()
Dim Arr(1 To 9) As Integer
Dim i As Long, j As Long, temp As Integer

' Diziye 1'den 9'a kadar olan sayıları atayın
For i = 1 To 9
Arr(i) = i
Next i

' Fisher-Yates algoritmasını kullanarak dizi elemanlarını rastgele sıralayın
For i = 9 To 2 Step -1
j = Int((i - 1 + 1) * Rnd + 1)
temp = Arr(j)
Arr(j) = Arr(i)
Arr(i) = temp
Next i

' Diziyi ekrana yazdırın (isteğe bağlı)
For i = 1 To 9
Debug.Print Arr(i)
Next i
End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
deneyin..

Sub rastgele_19()
Dim Arr(1 To 9) As Integer
Dim i As Long, j As Long, temp As Integer

' Diziye 1'den 9'a kadar olan sayıları atayın
For i = 1 To 9
Arr(i) = i
Next i

' Fisher-Yates algoritmasını kullanarak dizi elemanlarını rastgele sıralayın
For i = 9 To 2 Step -1
j = Int((i - 1 + 1) * Rnd + 1)
temp = Arr(j)
Arr(j) = Arr(i)
Arr(i) = temp
Next i

' Diziyi ekrana yazdırın (isteğe bağlı)
For i = 1 To 9
Debug.Print Arr(i)
Next i
End Sub
Çok teşekkürler,
 
Üst