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 >> > >

