![]() |
code not working properly - VBA beginner (random numbers generation, no repeats)
I'm trying to write a code that will generate random numbers and no number appears more than onece. Code: -------------------- For I = 0 To 3 For J = 0 To I Do n = Int(4 * Rnd) + 1 'random number generated Array1(I) = n 'random number settled in an array If (I = I - J) Then 'checking for the same place in array numsOK = True Else If Array1(I) = Array1(I - J) Then 'comparing two different places in an array numsOK = False Else numsOK = True End If End If Loop Until numsOK = True Next J 'only the last number and the first one always differ, other numbers repeat -------------------- Next I Plz help me and tell why the program isnt working. I have no idea, how to make it work. -- msburza ------------------------------------------------------------------------ msburza's Profile: http://www.excelforum.com/member.php...o&userid=34222 View this thread: http://www.excelforum.com/showthread...hreadid=539800 |
code not working properly - VBA beginner (random numbers generation, no repeats)
'Generates five random numbers between 1 and 20
'with no duplicates. (concept stolen from Tom Ogilvy) -- Jim Cone San Francisco, USA http://www.realezsites.com/bus/primitivesoftware Sub GetThem() Dim arrCheck(1 To 20) As Long Dim arrList(1 To 5) As Long Dim j As Long Dim N As Long Const LNG_PLUG As Long = 999 j = 1 Do While j < 6 'Get a random number Randomize N = Int(Rnd * 20 + 1) 'If number unique then add to arrList. If arrCheck(N) < LNG_PLUG Then arrList(j) = N arrCheck(N) = LNG_PLUG j = j + 1 End If Loop Range("B5:F5").Value = arrList() End Sub '-------------- "msburza" wrote in message I'm trying to write a code that will generate random numbers and no number appears more than once. Code: -------------------- For I = 0 To 3 For J = 0 To I Do n = Int(4 * Rnd) + 1 'random number generated Array1(I) = n 'random number settled in an array If (I = I - J) Then 'checking for the same place in array numsOK = True Else If Array1(I) = Array1(I - J) Then 'comparing two different places in an array numsOK = False Else numsOK = True End If End If Loop Until numsOK = True Next J 'only the last number and the first one always differ, other numbers repeat -------------------- Next I Plz help me and tell why the program isnt working. I have no idea, how to make it work. -- msburza |
code not working properly - VBA beginner (random numbers generation, no repeats)
Thx for help Jim. It's an example of a good code, short and sexy ;) Best regards msburza -- msburza ------------------------------------------------------------------------ msburza's Profile: http://www.excelforum.com/member.php...o&userid=34222 View this thread: http://www.excelforum.com/showthread...hreadid=539800 |
code not working properly - VBA beginner (random numbers generation, no repeats)
I have made the code working :) Code ------------------- Option Explicit Dim numsStored(5) As Integer Dim i As Integer Dim j As Integer Dim n As Integer Dim numOk As Boolean Private Sub CommandButton1_Click() For i = 0 To 5 Do numRnd For j = 0 To i If j = 0 Then numOk = True ElseIf numsStored(i) = numsStored(i - j) Then numOk = False numRnd End If Next j Loop Until numOk = True Next i For i = 0 To 5 Cells(i + 1, 4).Value = numsStored(i) Next i End Sub Private Sub numRnd() Randomize n = Int(6 * Rnd) + 1 numsStored(i) = n End Sub ------------------- -- msburz ----------------------------------------------------------------------- msburza's Profile: http://www.excelforum.com/member.php...fo&userid=3422 View this thread: http://www.excelforum.com/showthread.php?threadid=53980 |
code not working properly - VBA beginner (random numbers generation, no repeats)
Hi. Given the size of your problem, would you just want to do something
like a shuffle? Dim numsStored(1 To 6) As Long Sub Demo() Dim p As Long '(P)ointer Dim p2 As Long 'Second Pointer Dim t As Long '(t)empoary '// Load your 6 numbers... For p = 1 To 6 numsStored(p) = p Next p '// Shuffle For p = 1 To 6 p2 = Int(6 * Rnd) + 1 ' Swap... t = numsStored(p) numsStored(p) = numsStored(p2) numsStored(p2) = t Next p End Sub -- HTH. :) Dana DeLouis Windows XP, Office 2003 "msburza" wrote in message ... I have made the code working :) Code: -------------------- Option Explicit Dim numsStored(5) As Integer Dim i As Integer Dim j As Integer Dim n As Integer Dim numOk As Boolean Private Sub CommandButton1_Click() For i = 0 To 5 Do numRnd For j = 0 To i If j = 0 Then numOk = True ElseIf numsStored(i) = numsStored(i - j) Then numOk = False numRnd End If Next j Loop Until numOk = True Next i For i = 0 To 5 Cells(i + 1, 4).Value = numsStored(i) Next i End Sub Private Sub numRnd() Randomize n = Int(6 * Rnd) + 1 numsStored(i) = n End Sub -------------------- -- msburza ------------------------------------------------------------------------ msburza's Profile: http://www.excelforum.com/member.php...o&userid=34222 View this thread: http://www.excelforum.com/showthread...hreadid=539800 |
All times are GMT +1. The time now is 04:43 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com