On Jun 28, 2008, at 3:22 PM, tobieichner77-rb@yahoo.de wrote:
Hello,
I wrote a small app that generates six random numbers out of a range
from 1 to 70. The requirement is that no single number is used twice.
So far the only solution I came upon to prevent double entries is to
compare all entries with each other. In the case of two equal
entries, I simply re-create the random array again and do another
check.
For example:
while x(1) = x(2) or x(1) = x(3) or x(1) = x(4) or x(1) = x(5) or
x(1) = x(6) or x(2) = x(3) or x(2)= x(4) or x(2) = x(5) or x(2)=
x(6) or x(3)= x(4) or x(3) = x(5) or x(3) = x(6) or x(4) = x(5) or
x(4) = x(6) or x(5) = x(6)
for y = 1 to 6 step 1
x(y) = r.inrange(1,70)
next
wend
As you see, this leads to a long and ugly "or" chain, which will
finally end into a total mess if there are, let's say, twenty
numbers to compare with each other.
Can you give me a hint how I can manage this easier and more
convenient ?
Here's one..
Function NewUniqueRandomNumberList(count as Integer, r as Random,
minValue as Integer, maxValue as Integer) As Double()
dim d as new Dictionary
while d.Count < count
d.Value(r.InRange(minValue, maxValue) = nil
wend
dim theList() as Double
for each item as Double in d.Keys
theList.Append item
next
return theList
End Function
Charles Yeomans
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>
|