dizi içinde sayıların rastgele dizilimi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,039
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
1' den 5' e kadar olan sayıları rastgele dizen bir fonksiyon var mıdır?

Aşağıdaki gibi bir fonksiyon oluşturmaya çalıştım ama; hem çok uzun oldu hemde tüm seçenkleri kapsamıyor?

yardımlarınız için şimdiden teşekkürler,
iyi pazarlar.

Kod:
Function vbRandom(Optional deger As Integer) As Variant
Dim dizi As Variant
Dim x As Integer

x = Application.WorksheetFunction.RandBetween(1, 10)

If x = 1 Then
    dizi = Array(1, 2, 3, 4, 5)
ElseIf x = 2 Then
    dizi = Array(2, 3, 4, 5, 1)
ElseIf x = 3 Then
    dizi = Array(3, 4, 5, 1, 2)
ElseIf x = 4 Then
    dizi = Array(4, 5, 1, 2, 3)
ElseIf x = 5 Then
    dizi = Array(5, 1, 2, 3, 4)
ElseIf x = 6 Then
    dizi = Array(5, 2, 3, 4, 1)
ElseIf x = 7 Then
    dizi = Array(5, 3, 4, 1, 2)
ElseIf x = 8 Then
    dizi = Array(3, 4, 1, 2, 5)
ElseIf x = 9 Then
    dizi = Array(4, 1, 2, 5, 3)
Else
    dizi = Array(1, 2, 5, 3, 4)
End If

vbRandom = dizi

End Function
 
Katılım
6 Mart 2024
Mesajlar
65
Excel Vers. ve Dili
Excel 2013 TR & Excel 2016 TR
Merhaba,
Sorunuzdan benim anladığım
C++:
Function RandomSayilar(DegiskenMiktarı As Integer) As String
    Dim benzersiz() As Integer
    Dim rndSayi As Integer, sayac As Integer, i As Integer
    Dim sonuc As String
    
    ReDim benzersiz(1 To DegiskenMiktarı) ' Dinamik dizi tanımlama
    Randomize
    
    Do While sayac < DegiskenMiktarı
        rndSayi = Int(DegiskenMiktarı * Rnd) + 1
        For i = 1 To sayac
            If benzersiz(i) = rndSayi Then GoTo SkipLoop
        Next i
        sayac = sayac + 1
        benzersiz(sayac) = rndSayi
        sonuc = sonuc & rndSayi & ", "
SkipLoop:
    Loop
    
    ' Sondaki virgülü kaldırarak sonucu döndür
    RandomSayilar = Left(sonuc, Len(sonuc) - 2)
    
End Function
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,039
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Sorunuzdan benim anladığım
C++:
Function RandomSayilar(DegiskenMiktarı As Integer) As String
    Dim benzersiz() As Integer
    Dim rndSayi As Integer, sayac As Integer, i As Integer
    Dim sonuc As String
   
    ReDim benzersiz(1 To DegiskenMiktarı) ' Dinamik dizi tanımlama
    Randomize
   
    Do While sayac < DegiskenMiktarı
        rndSayi = Int(DegiskenMiktarı * Rnd) + 1
        For i = 1 To sayac
            If benzersiz(i) = rndSayi Then GoTo SkipLoop
        Next i
        sayac = sayac + 1
        benzersiz(sayac) = rndSayi
        sonuc = sonuc & rndSayi & ", "
SkipLoop:
    Loop
   
    ' Sondaki virgülü kaldırarak sonucu döndür
    RandomSayilar = Left(sonuc, Len(sonuc) - 2)
   
End Function
teşekkürler Hocam
 
Üst