Marc, you wrote:
>> Because I would keep geting 0 each time that Randon for x was run.

So, is it failing you in that:
(1) the series contains 0's (in any position?) 
or is it that :
(2) you (ALWAYS?) get the exact same series?

Obviously, if it's (1), simply adding 1 to it remedies that, but you
don't need me or anyone else to tell you that.

If it's (2), man, I'd be really curious to know in more detail about
what your processing.  That's because I just can't imagine it generating
the same sequence/series of numbers.
 
Please let us know about your further investigation and results.

Steve in Memphis

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Marc
Sent: Thursday, April 10, 2008 12:25 AM
To: RBASE-L Mailing List
Subject: [SPAM] [RBASE-L] - RE: [SPAM] [RBASE-L] - Re: [SPAM] [RBASE-L]
- Random numbers
Importance: Low

Hi Steve

1) I may have 10 to 20 rows of data with phrases. I count the number
    of rows then make the Random function statement to pick one of
    the rows / phrases at random.  Each user can have as many or as
    little rows of data as they like.
2) It seems each time I restarted Rbase it would pick the same sequence
    of numbers such as 0 0 5 0 5 3 8 2 10 14 , then restart and the same
    Random statement would give the same numbers.  If I did not close
    Rbase then the numbers kept going and seemed to be random.

One thing I did not test is we get in and out of this form and have 
different
categories of phrases, so the Random statement may be set to 5 or 10 or
20
for any given office depending on the category they are trying to get a 
random
phrase for.  So, since the Random statement is not exactly the same the 
numbers
may not be very random.  I really have not checked this yet.

I do not need 100% random numbers and a few repeats is OK.   But if I
use 
this
form 20 times a day and sometimes I am doing Random for x rows then
Random 
for
y rows, then Random for x .... I would not want the same set of numbers
like 
the
above example 0 0 5 0 5 3 8 2 10 14 .  Because I would keep geting 0
each 
time that
Randon for x was run.

I hope that makes sense,  again I need to test it further with this new 
variable included.

Thanks
Marc






Marc, couple of Q's:
(1) How many of these text items/phrases exist and are they identified
by some sort of numeric?
(2) I still don't understand your perspective that "... RBase ...
remembers where it left off ...".  Could you elaborate on that?

Now, let me try somethin' out on you.  Let's say that you have 15 items
- I take that from your RANDOM(15) example - and that they are
identified numerically from 1 thru 15.  If so, then perhaps something
along the lines of the command-file below would meet your needs.  Again,
I cannot say, Y||N, if the results are "precisely" random; of course, I
cannot precisely define "random", either, at least in a rock-solid
statistical/mathematical sense.  I do know that there exists one-or-more
statistical tests to verify something like this.

However, to my eyeball-test, it appears random, despite the occasional
sets of repeated values which might give one pause.  Still, no number
repeats more than twice.  Were we to loop it 1000x rather than 100,
then, I think, our odds of getting 3 of the same values in a row should
increase, but, to be honest, I don't know if I could have determined by
how much even when I was studying business/management statistics.

However, I do know that the probability of a series of independent
events is pretty simply calculated by multiplying the probability of a
single event by the number in the series, i.e. P(A1,A2,A3) = P(A1) *
P(A2) * P(A3), where A is the generation of that random number and 1,2,3
are iterations 1..3.  In our case, RBase tells us:

R>SET VAR vProbability03 REAL=((1/15) * (1/15) * (1/15))

R>sho var
Variable           = Value                                   Type
------------------   ------------------------------          --------
#DATE              = 04/09/2008                               DATE
#TIME              = 10:41:14.695                             TIME
#PI                = 3.14159265358979                         DOUBLE
SQLCODE            = 0                                        INTEGER
SQLSTATE           = 42S02                                    TEXT
#NOW               = 04/09/2008 10:41:14.787                  DATETIME
vProbability03     = 0.0002963                                REAL


I do think that probability goes up with the number of iterations.
However, I think it remains sufficiently low.  Again, that's beyond what
I currently grasp.  This site, http://mathforum.org/dr.math/ask/, has
some pretty good stuff, if anybody's interested, and I'm sure there are
more.

The point of all this is, that I ain't so sure that RB's RANDOM()
function has any faults.  I really think it works as advertised.  I
think it comes down to how we utilize it, including what we pass to it
and what we do with the value returned from it.  Albert's example is a
nice variation on doing something with what we pass to it.  I hope my
use of MOD(.vAlbertsNUM,IntegerOfPossibleOutcomes)
illustrates a variation on doing something with the return value.

Now, let me ask/add, if any repeating series is "verboten", i.e. no
number can occur more than one at a time, then you could add another
WHILE-loop to trap for this, as shown next, between the long
asterisked-lines.  This block will loop anytime the number,
vWhichTextToGet, repeats.  So, there will never be a series of numbers
longer than 1.  Truly, although this approach seems to nicely pass the
"eyeball test", I suspect that, mathematically/scientifically, it's
actually "less" random ...

-- ****************************
-- *** RandomTextTestxA.RMD ***
-- ****************************
...
-- *** Init var to help trap repeaters ... ***
SET VAR vWhichTextToGetPREV INT = 0
...
WHILE ...
   -- ******************************************************
   -- *** Is the current value the same as the previous? ***
   -- *** This will always be true the first iteration   ***
   -- *** as they are both zero                          ***
   WHILE vWhichTextToGetPREV = .vWhichTextToGet THEN
      -- *** Albert's expression ; check your quote settings ...***
      SET VAR vAlbertsNUM INT=(RANDOM(INT(1000 *
(FLOAT(FORMAT(.#time,'hhmmss.sss'))))))

      -- *** Assign value to determine which item to select from table
************
      -- *** 15 is the value because it is the count of our RandomText
records  ***
      -- *** Since result of MOD() can be 0..14, add one to make it
1..15,      ***
      -- *** as 15 is our "sample space", possible outcomes, or solution
domain ***
      SET VAR vWhichTextToGet = ((MOD(.vAlbertsNUM,15)) + 1)

   ENDWHILE

   -- *** Assign value to duplicate test var ***
   SET VAR vWhichTextToGetPREV = .vWhichTextToGet
   -- ******************************************************
   ...
ENDWHILE
...
RETURN



Well, not to beat a dead horse, but "Hi, ho, Silver, away!"
Steve in Memphis



-- ****************************
-- *** RandomTextTestxA.RMD ***
-- ****************************

SET VAR vWhichTextToGet INT=0
SET VAR vCounter INT=0

WHILE vCounter < 100 THEN

   -- *** Albert's expression ; check your quote settings ...***
   SET VAR vAlbertsNUM INT=(RANDOM(INT(1000 *
(FLOAT(FORMAT(.#time,'hhmmss.sss'))))))

   -- *** Assign value to determine which item to select from table
************
   -- *** 15 is the value because it is the count of our RandomText
records  ***
   -- *** Since result of MOD() can be 0..14, add one to make it 1..15,
***
   -- *** as 15 is our "sample space", possible outcomes, or solution
domain ***
   SET VAR vWhichTextToGet = ((MOD(.vAlbertsNUM,15)) + 1)

   -- *** See what ya' got there ************************************
   -- *** In my simple table, I used the numbers 1..15 for ID's   ***
   -- *** and the name of that number for the text, like NUM2Word ***
   SELECT .vCounter, .vAlbertsNUM, .vWhichTextToGet, RandomText,  +
   FROM RANDOM_TEXT_TBL +
   WHERE RandomTextID = .vWhichTextToGet

   -- *** Just for appearance during testing, after first SELECT ***
   SET HEADINGS off

   -- *** Use something like this to SELECT the RandomText INTO a var
***
   {
   SELECT RandomText INTO vRandomText IND viRandomText +
   FROM MY_RANDOM_TEXT_TBL +
   WHERE RandomTextID = .vWhichTextToGet
   }

   -- *** Increment counter
   SET VAR vCounter = (.vCounter + 1)

ENDWHILE

-- *** Reset headings
SET HEADINGS on

RETURN


R>run spRandomTextTestxA.RMD
 0          5976443    9          RandomText
 ---------- ---------- ---------- ------------------------ 
          0    5976443          9 Nine
          1   73764218          9 Nine
          2   54736378         14 Fourteen
          3   86170466         12 Twelve
          4   71083348         14 Fourteen
          5    9630739          5 Five
          6   63371555          6 Six
          7   82733176          2 Two
          8    8318094         10 Ten
          9   14836858         14 Fourteen
         10    7375324          5 Five
         11   62039506          2 Two
         12   36737584          5 Five
         13   22929708          4 Four
         14   46234866          7 Seven
         15   11494059         10 Ten
         16   47519728         14 Fourteen
         17     901058          9 Nine
         18   25827580         11 Eleven
         19   28052423          9 Nine
         20   20932946         12 Twelve
         21   69228632          3 Three
         22   14027609         15 Fifteen
         23   27557416          2 Two
         24   73266756          7 Seven
         25   56107688          9 Nine
         26    9199715          6 Six
         27   88609858         14 Fourteen
         28   51146324         15 Fifteen
         29   32187899         15 Fifteen
         30   37580366         12 Twelve
         31   83932191          7 Seven
         32    3137028          4 Four
         33   45993076          2 Two
         34   78564800          6 Six
         35   31715155         11 Eleven
         36   79132163          9 Nine
         37   59564663          9 Nine
         38   31459319         15 Fifteen
         39    2155319         15 Fifteen
         40    2736561          7 Seven
         41   35934060          1 One
         42   73965057         13 Thirteen
         43    9230337         13 Thirteen
         44   38940407          3 Three
         45   84433007          3 Three
         46   76837942          8 Eight
         47   89895040         11 Eleven
         48   48220837          8 Eight
         49   68672782          8 Eight
         50   65232620          6 Six
         51   89416762          8 Eight
         52    7475500         11 Eleven
         53   41259878          9 Nine
         54   26720475          1 One
         55   84079964         15 Fifteen
         56   46963867          8 Eight
         57   89914673          9 Nine
         58   54044483          9 Nine
         59   48696500          6 Six
         60   11897410         11 Eleven
         61   47798232         13 Thirteen
         62   33859521          7 Seven
         63   64665439          5 Five
         64   60752484         10 Ten
         65   22017738          4 Four
         66   51872545         11 Eleven
         67   40520219         15 Fifteen
         68   30703042          8 Eight
         69    6054396          7 Seven
         70   87617733          4 Four
         71   58455404         15 Fifteen
         72   84725450          6 Six
         73   76885613          9 Nine
         74   78214981          2 Two
         75   45392731          2 Two
         76    6176772         13 Thirteen
         77   80356453         14 Fourteen
         78   17896237          8 Eight
         79   64351378         14 Fourteen
         80   19973710         11 Eleven
         81   32282772         13 Thirteen
         82   79071673         14 Fourteen
         83   15754822          8 Eight
         84   50507216         12 Twelve
         85   47684427         13 Thirteen
         86   57215205          1 One
         87   44483419          5 Five
         88   22028960          6 Six
         89   23158085          6 Six
         90   39071453          9 Nine
         91   77811971         12 Twelve
         92   25371841          2 Two
         93   71949472          8 Eight
         94   47245095          1 One
         95   63364283          9 Nine
         96   40589974          5 Five
         97   22996820          6 Six
         98   13880414         15 Fifteen
         99   61303552          8 Eight



-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Marc
Sent: Wednesday, April 09, 2008 1:27 AM
To: RBASE-L Mailing List
Subject: [SPAM] [RBASE-L] - Re: [SPAM] [RBASE-L] - Random numbers
Importance: Low

Thanks Albert

But I do not think that will work for me.
I use the random number to get a row number.
I have a table with dozens of sample text for form letters
and I want to select them at Random.

I think the Random function will work OK, as long as they
do not restart Rbase several times a day.  It seems as long
as RBase is on it remembers where it left off so to speak
then picks another random number but is you restart RBase
it starts over with the same sequence of numbers.

So, I think this will work, I never really tested it until now.

Thanks
Marc




----- Original Message ----- 
From: "Albert Berry" <[EMAIL PROTECTED]>
To: "RBASE-L Mailing List" <[email protected]>
Sent: Tuesday, April 08, 2008 12:11 PM
Subject: [RBASE-L] - Re: [SPAM] [RBASE-L] - Random numbers


> R:Base uses a pseudo random number generator. You can use the system
> time variable to the 1/1,000 second to generate pseudo random numbers
> that are for all intents and purposes random. Here is an example
>
> select (random(INT(1000 * (FLOAT(format(.#time,"hhmmss.sss")))))) from

> sys_tables where count = 1
>
>
>
> Marc wrote:
>> I just tested this 3 times and get the same numbers each time.
>> I am setting the Random number to 15 and created 10
>> The numbers I get are
>> 0 0 5 0 5 3 8 2 10 14 each of the 3 times I tested this.
>>
>> I hope I am missing something, I sent an update out several months
>> back that needs truley random numbers.
>>
>> Marc
>>
>
>


Reply via email to