06-04-2024, 01:17 AM
Drawing Numbers without Repetition
Code: (Select All)
_Title "Drawing numbers without repetitions" 'b+ 2024-06-03
DefLng A-Z ' all variables are long
Randomize Timer
highest = 50 ' draw numbers from 1 to 50
drawNumber = 10 ' how many numbers to draw
restart:
ReDim deckOfNumbers(1 To highest) ' long also
' load the deck with numbers
For i = 1 To highest
deckOfNumbers(i) = i ' so the deck so far is very orderly
Next
' here is Fisher - Yates shuffle routine the most efficient known to mathematicians
For i = highest To 2 Step -1
Swap deckOfNumbers(i), deckOfNumbers(Int(Rnd * i) + 1) ' swap i with 1 to i
Next
' now the deck is shuffled !!! check it out
For i = 1 To drawNumber
Print deckOfNumbers(i);
Next
Print
' now maybe we want to list numbers in order
ReDim order(1 To highest)
For i = 1 To drawNumber
order(deckOfNumbers(i)) = 1 ' mark the numbers in order
Next
For i = 1 To highest
If order(i) Then Print i;
Next
Print
Print "... that should show:"; drawNumber; "numbers between 1 and"; highest; ", in order, no repeats."
Print: Print
Input " Please enter Highest number "; highest
Input " Please enter Draw number "; drawNumber
If highest <> 0 And drawNumber < highest Then GoTo restart
b = b + ...