Easy mistake to make, Jacques, but it is not 3!.

Random() emulates independent random numbers.  It cannot avoid numbers returned 
before in the sort.  Each line will get a randomly assigned number independent 
of the other lines.  

The number of ways 3 lines can be ordered does not apply.

Each line will be assigned a number by random().  So it is possible that the 
first line will be assigned a 2 and the other lines assigned 2, also.  The 
probability of that is one out of 3^3.  (Not three factorial)

You can create a function to log the assignments and use that as the comparison 
metric function.  You can see the assignments, and different lines can have the 
same value.  

Each sort will get a random pattern of 1, 2 and 3.  There are 27 of them.

Fourteen of them will cause a sort with the first line coming first again.  
That is 52%, not 33%.  

You can write code to sort the same starting string a thousand times and the 
same first line will show up 52% of the time, not 33%.  

Dar

On May 22, 2013, at 6:16 PM, Jacques Hausser wrote:

> Dar,
> 
> I'm afraid you are wrong…
> they would not be 27 possibilities (3^3) but only 6 (3! - factorial), because 
> each line (first, second and third) can only be present once.
> 
> And I tested random (3) and random (9999) corrected to give a number between 
> 1 and 3 with the following scripts:
> 
> on mouseUp
>   put "" into fld "FR"
>   repeat 100
>      put random(3) & comma after fld "FR"
>   end repeat
> end mouseUp
> 
> result: 
> 1,3,2,3,1,1,1,3,3,3,3,2,1,2,2,2,1,2,2,3,1,3,2,3,2,2,3,2,2,3,3,2,2,3,1,3,1,3,2,2,1,3,2,1,3,3,2,3…
> mean value: 1.992
> 
> on mouseUp
>   put "" into fld "FR"
>   put 0 into tt
>   repeat 1000
>      put random(9999) into tx
>        switch
>          case tx <= 3333
>              put 1 into t
>              break
>          case tx <= 6666
>              put 2 into t
>              break
>          default
>              put 3 into t
>        end switch
>        add t to tt
>    end repeat
>    put tt/1000 into fld "Moyenne"
> end mouseUp
> 
> result: 
> 1,2,3,3,1,3,2,3,3,2,3,2,3,3,2,2,1,1,3,3,2,2,2,1,3,1,3,3,3,3,1,1,3,2,3,1,2,1,1,1,2,1,3,2,3,2,2…
> mean value: 1.992
> 
> so, it seems to be no statistical difference in the results ! No reason to 
> use large numbers when not needed. (Ideally, the means should be 2, not 
> 1.992, but well…)
> 
> Jacques
> 
> 
> Le 23 mai 2013 à 01:23, Dar Scott <d...@swcp.com> a écrit :
> 
>> Here is (I think) the situation for random(3).
>> 
>> Lines will be (virtually) assigned numbers randomly; there are 27 
>> possibilities.
>> 
>> There are 9 cases in which the first line is assigned a 1.  It is first in 
>> the sort.
>> There are 4 cases in which the first line is assigned a 2 and the other 
>> lines get 2 or 3.  It is first in the sort
>> There is one case in which all get a 3.  Again, the first line comes in 
>> first.
>> 
>> So, assuming my math is good, that means the first line comes in first 14 
>> out of 27 times.  That is 52% and should match what people are getting 
>> empirically.  
>> 
>> This doesn't address broken random(), though.  It just emphasizes the 
>> importance of the big number for random().
>> 
>> Dar
>> 
>> 
>> On May 22, 2013, at 11:59 AM, Chris Sheffield wrote:
>> 
>>> I have a list of three words that I need to be randomly sorted. To start 
>>> with, the first word is the correct answer to a question. I want to 
>>> re-order the list so that the correct answer may be the second or third 
>>> word, and not necessarily the first. How can I do this successfully every 
>>> time? The docs give an example like this:
>>> 
>>>     sort lines of myVar by random(the number of lines of myVar)
>>> 
>>> But this only seems to work successfully one time. After that, the list is 
>>> always set so the first word is the correct answer. So then I tried 
>>> randomly setting the randomSeed value, since this value is supposed to 
>>> affect the random() function and the any keyword, but this didn't seem to 
>>> make much difference except to change it so either the second or third word 
>>> is *always* the right answer. I need it to be more mixed up than that.
>>> 
>>> So does anyone have a good way to do this?
>>> 
>>> Thanks,
>>> Chris
>>> 
>>> 
>>> --
>>> Chris Sheffield
>>> Read Naturally, Inc.
>>> www.readnaturally.com
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to