How about pro-rating the range 0-32767 divided by the max (32767) to get a
ratio to multiply against your 370500. Since there are more than 32767
numbers between 0 and 370500, you could hope that the ratio spreads out the
useful answers roughly 11 apart. Thus, you could add a second RND(12) to
fill in those gaps with a cap on 370500.

R=RND(32767)
RATIO=R/32767
X=INT(RATIO*370500)+RND(12)

my 1 cent.
----- Original Message -----
From: "Barry Brevik" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, November 10, 2004 10:26 PM
Subject: RE: [U2] [UV] Random number (RND()) help


> >Workaround is something like 32768 * Rnd(32767) + Rnd(32767).
>
> Wouldn't that be *unlikely* to generate numbers less than 32767? Or at
least
> they would be statisticlly skewed away from that lower range.
>
> Maybe something like (for numbers between 0 and 370500):
>
> ITERATIONS = 10000
> RND.MAX = 370500
> RND.MULX = INT(SQRT(RND.MAX))
> RND.ADD = RND.MAX - (RND.MULX * RND.MULX)
> LOW.FACTOR = (RND.MULX + RND.ADD) / RND.MAX
> IF LOW.FACTOR LT 1 THEN LOW.FACTOR = 1
> FOR I = 1 TO ITERATIONS
>   IF LOW.FACTOR THEN
>     RND.NUM = RND(RND.MULX + RND.ADD)
>     LOW.FACTOR -= 1
>   END ELSE
>     RND.NUM = (RND(RND.MULX) * RND.MULX) + RND.ADD
>   END
> NEXT
> -------
> u2-users mailing list
> [EMAIL PROTECTED]
> To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to