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

Reply via email to