How to generate unique Random numbers

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?