Hi all
Any body please tell me how to generate unique random numbers from 1 to 15.
I had used the rnd() function and ( y - x )*@Random + x
but of no use. the generated numbers always gets repeated.
i dont want the numbers to be repeated.
for eg something like as given below but can be in any order
3 8 12 4 11 9 13 6 1 15 2 14 7 10 5
any body pls tell me how can i achieve the same. i need it very much i tried many ways but still cant generate a pattern like this. can i acieve it by using some complicated array methods ? ar any steps ?
Help on this is much appreciated
Thanks
VJ
Subject: How to generate unique Random numbers
Did you use Randomize before calling Rnd()?
Subject: How to generate unique Random numbers
This’ll work:
list:=“1”: “2”: “3” : “4” : “5” : “6”: “7” : “8”: “9” : “10” : “11” : “12” : “13” : “14”: “15”;
newlist:=“”;
@For(x:=15;x>0;x:=x-1;
@Do(
number:=list[@Integer(x *@Random + 1)];
newlist := newlist : number;
list :=@Trim(@Replace(list;number;""))
)
);
@Trim(newList)
Regards,
René
Subject: RE: How to generate unique Random numbers
Thanks for the stuff Rene. But i want it in Lotus script. any idea on Generating the same in lotus script ?
Also by the way iam not Using Randomize statement to randomize a seed.
Expecting you replies.
VJ
Subject: RE: How to generate unique Random numbers
Here’s a Lotusscript way. I use the evaluate statement for the Random number. There might be a neater way to generate this.
Dim numbers List As Integer
Dim randomNumbers List As Integer
Dim number As Integer, randomNumber As Integer
Dim i As Integer, x As Integer
Dim randomNumberArray As Variant
Dim printLine As String
For i=0 To 14
numbers(i) = i+1
Next
For i=0 To 14
number = 15- i
randomNumberArray = Evaluate(|@Integer( | + Cstr(number)+| *@Random )|)
'evaluate returns a variant, so the random number is the first element of randomNumberArray
randomNumber = Cint(randomNumberArray(0))
randomNumbers(i) = numbers(randomNumber )
'remove the element from the original numbers list
For x = randomNumber To 13 - i
numbers(x) = numbers(x+1)
Next
Erase numbers(14-i)
Next
'this will print a line containing the random numbers, it is up to you how you will handle them
printLine = ""
For i=0 To 14
printLine = printLine + Cstr(randomNumbers(i)) + " "
Next
Print printLine
Subject: RE: How to generate unique Random numbers
Hi Rene,
Would something like that work ?
dim s_rnd
Randomize
s_rnd=rnd
(…)
Your Loop
Randomize s_rnd
s_rnd=CInt(rnd()*15)
'Feed your array
(…)
End Loop
ian
Subject: RE: How to generate unique Random numbers
Hi Rene
Hats off to you. Brilliant stuff. thats worked well. Very thanks pal.
Thanks again
JV
Subject: How to generate unique Random numbers
This has already been answered here:
http://www-10.lotus.com/ldd/nd6forum.nsf/DateAllThreadedweb/28471529e50cc7ae8525727400491010?OpenDocument
What is wrong with those answers?