Contesting for Idiot du Jour

Roger Guay irog at mac.com
Thu Sep 3 11:17:21 EDT 2020


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 at 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 at 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 at 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 at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode




More information about the use-livecode mailing list