Great suggestion, Thomas! It works very well. Originally, I was flummoxed by my code, using polar coordinates, not working as expected. Thanks to you and the others responding to this thread, I now get it. Your suggestion reestablishes my faith in the basic math, while recognizing limitations sometime apply to any particular solution. FWIW, I am playing around with Bertrand Paradox, https://en.wikipedia.org/wiki/Bertrand_paradox_(probability) <https://en.wikipedia.org/wiki/Bertrand_paradox_(probability)>, and I'm trying to be as precise as possible in simulating the approaches to the problem. Just having fun, as it were!
Roger > On Sep 3, 2020, at 1:42 PM, Thomas von Fintel via use-livecode > <use-livecode@lists.runrev.com> wrote: > > I think the easiest way is to adjust the linear random function so that it > produces higher numbers more frequently than lower numbers. More precisely, > the frequency of 10 must be four times that of 5 (because the area quadruples > if you double the radius). Or else the outer points have a lower probability > of being found. > > If you replace > > put random(200) into tR -- 200 is half the width of the larger circle > > by > > put sqrt(random(1000^2))/1000*200 into tR -- 200 is half the width of the > larger circle > > you get random numbers that fulfil these requirements. > > If you only want to test whether a certain point is within the inner corcle, > you only need to look at the radius. But I assume you need this in a more > complicated situation. > > I hope this helps > Thomas > > > Am 03.09.2020 um 19:21 schrieb Roger Guay via use-livecode: >> Or to put it simply, how would one select random point (e.g. in a circle) >> using Polar Coordinates?? >> >> Roger >> >>> On Sep 3, 2020, at 8:17 AM, Roger Guay via use-livecode >>> <use-livecode@lists.runrev.com> wrote: >>> >>> Jerry, >>> >>> You’ve done a very nice job of describing what’s actually(?) happening in >>> my code, but I think you missed the point of my question. >>> You agree that if you simply sample random pixels then the ratio of a >>> random pick inside the smaller circle will depend on the area of the >>> circles. >>> And, if I pick a random x and y within the concentric circles of radius R >>> and 2R, ¼ of the time they will lie in the smaller circle and ¾ of the time >>> in the bigger. >>> So, pick any random x and y and convert to radial coordinates. Everything >>> should work! >>> In my code I pick a random angle and a random radius (radial coordinates) >>> within the limits of the larger circle, thus picking random points within >>> the area of the larger circle, yet I get ½ (which you say is the right >>> answer). >>> My intent was to pick random points (using radial coordinates) for which >>> the result should be ¼! >>> >>> What’s wrong with my code? >>> >>> Thanks, >>> >>> Roger >>> >>>> On Sep 2, 2020, at 8:27 PM, Jerry Jensen via use-livecode >>>> <use-livecode@lists.runrev.com> wrote: >>>> >>>> 1/2 is the right answer. >>>> >>>> Take your drawing of the circles. Cut a verrrryy thin radial slice from >>>> the center to the outside circle. So thin that it is just a line. >>>> >>>> Now think of how likely a random point on that line will be in the part of >>>> the line that was in the smaller circle. The part that was from the >>>> smaller circle is HALF as long as the entire line. >>>> >>>> Now add up all the possible positions of that line. Why would that change >>>> the answer? >>>> >>>> Congratulations, you understand integrals! >>>> .Jerry >>>> >>>>> On Sep 2, 2020, at 7:38 PM, Roger Guay via use-livecode >>>>> <use-livecode@lists.runrev.com> wrote: >>>>> >>>>> Your chance to be Genius du Jour: >>>>> >>>>> If I construct 2 concentric circles, one being half the radius of the >>>>> larger, then simple math shows that the smaller circle has an area ¼ the >>>>> area of the larger. >>>>> Now if I generate a random point within the radius of the larger circle, >>>>> I should expect that the probability of it landing in the smaller circle >>>>> to be ¼. >>>>> But, I must be doing something wrong because I get ½ ! >>>>> >>>>> Here is my script: >>>>> >>>>> on mouseDown >>>>> >>>>> getStuff >>>>> >>>>> end mouseDown >>>>> >>>>> >>>>> local tR, tTheta, tX0, tY0, tX1, tY1, tTotCount, tL, tLongCount >>>>> >>>>> on getStuff >>>>> >>>>> put item 1 of the loc of grc OuterCircle into tx0 >>>>> >>>>> put item 2 of the loc of grc OuterCircle into tY0 >>>>> >>>>> put "" into tTotCount >>>>> >>>>> put "" into tLongCount >>>>> >>>>> emptyFlds >>>>> >>>>> end getStuff >>>>> >>>>> >>>>> on mouseUp >>>>> >>>>> lock screen >>>>> >>>>> repeat 1000 >>>>> >>>>> put random(200) into tR -- 200 is half the width of the larger >>>>> circle >>>>> >>>>> if tR > 1 then >>>>> >>>>> ## put random(2*pi) into tTheta1 >>>>> >>>>> get random(360) >>>>> >>>>> put it*pi/180 into tTheta1 >>>>> >>>>> put tR*cos(tTheta1) into tX1 >>>>> put tR*sin(tTheta1) into tY1 >>>>> >>>>> set the loc of grc Ptgrc to tX0 + tX1, tY0 - tY1 --- >>>>> grc Ptgrc is a 2 pixle oval >>>>> >>>>> if intersect(grc Ptgrc, grc InnerCircle, "opaque >>>>> Pixels") then add 1 to tLongCount >>>>> >>>>> add 1 to tTotCount >>>>> >>>>> end if >>>>> >>>>> end repeat >>>>> put tTotCount into fld "totcountFld" >>>>> >>>>> put tLongCount into fld “LongCountFld" >>>>> >>>>> put tLongCount/tTotCount into fld "RatioFld" >>>>> >>>>> unlock screen >>>>> >>>>> end mouseUp >>>>> >>>>> >>>>> Apparently, this does not generate a random point within the larger >>>>> circle! Can someone please tell me what’s wrong here? >>>>> >>>>> Thanks, >>>>> Roger >>>>> _______________________________________________ >>>>> 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-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