I don't think anybody is claiming that random() does not work. (Some random number generators will break with a bad seed, but that is outside the scope of discussion.) When Chris thought random() was broken, most people suggested he look at his code around the sort.
The problem is that randomly assigning sort values will distort the sort because of the handling when sort values are equal. The sort value is assigned independently for each line or item. That means some will be the same. In the same sense, if I sorted on length of the item, those items with the same length will keep the same order. In this random() case, some will have the same randomly selected number. Large values to random() reduces the distortion. For random(2) and a list of 2, the first will be first again 75% of the time. For random(3) and a list of 3, it will be first 53% of the time. For random(999999) it seems to be first 50% of the time for either of those cases. I think you do have a point about lists eventually becoming larger than the large number. If random does something reasonable with an super large number than that might be better. Dar On May 23, 2013, at 12:54 PM, Björnke von Gierke wrote: > So much misinformation in this thread :( > > The random function works! it uses the same code as many other programs to do > random stuff. Of course it's using a semi random list, but the technicalities > about when random is not random enough does not come into place for sorting > lines. > > sort the lines of theList by random(the number of lines in theList) > > This too works. there's no need to make an arbitrary large number _BECAUSE IT > MIGHT IN SOME CASES DECREASE RANDOMNESS_. Mostly when your variable grows > bigger then anticipated, so usually you're fine. But still, don't use > arbitrary magic numbers, it's just bad coding habits. > > As for the original poster: DO NOT SET THE RANDOMSEED!!!! Then your code will > start to work as expected, or as erroneous as you coded it ;-) > > > On 23.05.2013, at 03:16, Jacques Hausser wrote: > >> Chris, I think Randy has put his finger on something: the * is before any >> number or letter in the ASCII numeration. I do not know what the random >> function uses when randomizing a "set" (I was not even aware of this >> possibility) but that could well be the ASCII value(s) of the first char(s). >> >> Jacques >> >> Le 23 mai 2013 à 02:36, Randy Hengst <iowahen...@mac.com> a écrit : >> >>> Well Chris, I'm sure you've already tried this, but when this kind of thing >>> happens to me… in other words, when a script is correct, but the results >>> are wrong… I've messed something up later in the script with another put >>> statement that overrides it. Maybe the place in the script where you've >>> removed the * >>> >>> My debugging skills are not top notch… So, I'd brute force things and put >>> an "answer tPossibleAnswers" after each line to see what is happening… and >>> again at the end of the handler. >>> >>> I'd be interested in what you discover. >>> >>> be well, >>> randy >>> ----- >>> On May 22, 2013, at 4:34 PM, Chris Sheffield wrote: >>> >>>> Thanks for the suggestions everyone, but I'm still getting strange >>>> results, and I'm beginning to think there's something I'm doing that's >>>> affecting use of the random() function. Not really sure what it would be >>>> though. Here's my code: >>>> >>>> set the itemDel to tab >>>> put "*" & item 3 of sRecSet into tPossibleAnswers -- correct answer >>>> put cr & item 4 of sRecSet after tPossibleAnswers -- distractor 1 >>>> put cr & item 5 of sRecSet after tPossibleAnswers -- distractor 2 >>>> sort lines of tPossibleAnswers by random(999999) -- randomly re-order the >>>> list >>>> >>>> This app pulls words from a database and presents three possible answers >>>> to choose from. The asterisk above is used to identify the correct answer >>>> after the sort takes place. It's removed later on. The sort only works >>>> randomly one time. After that, the same sort order is used every time, so >>>> the correct answer *always* ends up listed first. It doesn't matter if I >>>> use a very high number or if I use 'the number of lines of >>>> tPossibleAnswers'. Something is very strange. Just as a quick test, I >>>> added a button to the card with this inside: >>>> >>>> put "one" & cr & "two" & cr & "three" into tLines >>>> sort lines of tLines by random(the number of lines of tLines) >>>> answer tLines >>>> >>>> This seems to work just fine. Yes, it does mean getting the same order >>>> sometimes twice or maybe even three times in a row, but not usually more >>>> than that, which would be fine in this case. So I'm not sure what's going >>>> on with my actual code. I'm no longer setting the randomSeed or anything >>>> like that. >>>> >>>> The other strange thing is no matter what I try, if I use the random() >>>> function or the any keyword in anyway, I get similar results. Something is >>>> affecting the "randomness". This is for an iOS app, btw, if that makes any >>>> difference to anyone. This might be kind of a dumb thing to do, but the >>>> only other thing I can think of would be to add several more lines of data >>>> to the three actual possible answers, then sort the whole thing, then >>>> somehow filter out everything I added before the sort. With more lines, >>>> maybe I'd get better results? >>>> >>>> Thanks again, >>>> Chris >>>> >>>> On May 22, 2013, at 3:03 PM, Dar Scott <d...@swcp.com> wrote: >>>> >>>>> I think you are going to get the first line of the original list (correct >>>>> answer) about half the time. Does that seem right to you from what you >>>>> have seen? The correct answer will be in the first two about 80% of the >>>>> time. >>>>> >>>>> Using the larger argument for random should give you better proportions. >>>>> You should get it in the first line a third of the time. >>>>> >>>>> If you only interested in the first line, there might be some methods >>>>> that are clearer and more fun. >>>>> >>>>> 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 >>> >>> >>> _______________________________________________ >>> 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 an alternative Dictionary viewer: > http://bjoernke.com/bvgdocu/ > > Chat with other RunRev developers: > http://bjoernke.com/chatrev/ > > > > _______________________________________________ > 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