Mick I too have been playing with random numbers (I do lots of statistical programming with Rev, so random(0 is one of my tools).
Your problem sound a very much like it relates to a similar issue that I came across with random() and arrays a few days ago (quoted below). I'm pretty sure now that it represents a bug -- a very scary one too, because it would be completely invisible in many circumstances. Do you want to post a bug report? Mike My post: > I have struck an unexpected issue with an array. I assumed that the two > following code snipets would be equivalent, but they are not. > > Version 1 > put random(10)-1 into tnum > add 1 to iHisto[tnum] > Version 2 > add 1 to iHisto[(random(10)-1)] > > Version 1 does what I expected, and, I guess is more readable and so > preferable for that reason. However, I can't see why the two versions differ > in their effects. > > Here is the full code of my button for anyone who wishes to try it out (the > different versions are indicated with comments): > > on mouseUp pMouseBtnNo > put 10000 into oreps > put 100 into ireps > set the cursor to busy > repeat oreps > put 0 into kount > repeat ireps > add 1 to kount > -- **next two lines > -- put random(10)-1 into tnum > -- add 1 to iHisto[tnum] > -- **OR the next one line > add 1 to iHisto[(random(10)-1)] > -- > end repeat --inner > combine iHisto by return and comma > sort lines of iHisto numeric descending by item 2 of each > add 1 to ohisto[item 2 of line 1 of iHisto] > put empty into iHisto > end repeat --outer > combine oHisto with return and tab > sort lines of oHisto numeric ascending by word 1 of each > put oHisto into fld "OutputFld" > end mouseUp > > Thanks, > Michael Lew Original post: > Hello, everyone, > I was working on a project that involved randomness, which seemed to > be a little off, so I did some testing. > > I ran this handler from msgbox: > on tst2 > repeat with i = 2 to 10 > put i into randarg > put "0 0 0 0 0 0 0 0 0 0" into theList > put 10000 * i into nRepeats > repeat nRepeats times > add 1 to word random(randarg) of theList > end repeat > put nRepeats && randarg && theList into line i of fld "tmpFld" > end repeat > end tst2 > > THE RESULTS: > > 20000 2 10027 10027 0 0 0 0 0 0 0 0 > 30000 3 9974 9973 9974 0 0 0 0 0 0 0 > 40000 4 10152 10153 10151 10150 0 0 0 0 0 0 > 50000 5 10144 10145 10142 10143 10142 0 0 0 0 0 > 60000 6 9981 9981 9979 9982 9979 9980 0 0 0 0 > 70000 7 10188 10193 10191 10187 10188 10192 10191 0 0 0 > 80000 8 10088 10089 10088 10089 10087 10086 10088 10087 0 0 > 90000 9 9984 9978 9976 9984 9983 9980 9980 9983 9983 0 > 100000 10 9998 9998 9997 9998 9999 9999 9998 9998 9998 9998 > > You can see the numbers of repeats are as expected, yet the sum of > each line SHOULD be exactly the same as the number of repeats, but > isn't (some above, some below) ... the individual numbers are all > near to 10000 but even nearer to one another in a given line (but > aren't all equal either). > > HOWEVER, when I replace the line > add 1 to word random(randarg) of theList > WITH > put random(randarg) into tmp > add 1 to word tmp of theList > > THE RESULTS ARE: > > 20000 2 9825 10175 0 0 0 0 0 0 0 0 > 30000 3 9792 9994 10214 0 0 0 0 0 0 0 > 40000 4 10077 9955 9808 10160 0 0 0 0 0 0 > 50000 5 9926 10083 10078 9888 10025 0 0 0 0 0 > 60000 6 9964 10100 9922 9928 10019 10067 0 0 0 0 > 70000 7 9920 10094 9945 9823 9968 10079 10171 0 0 0 > 80000 8 10143 10129 10080 9809 10024 9948 9971 9896 0 0 > 90000 9 9764 10054 10094 9983 10038 10017 9991 10070 9989 0 > 100000 10 10029 9947 9910 9776 10252 10114 9935 9938 10006 10093 > > This appears correct ... the sum of each line is (the ones I've > checked are and estimates of the others are close) the number of > repeats and the numbers seem randomly sprinkled around 10000. > > It seems to me that the replacement lines should do exactly the same > thing as the line they replace. Is this not working correctly or am > I missing some knowledge of how it should be working? _______________________________________________ use-revolution mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
