Skip to content

Instantly share code, notes, and snippets.

@cgobat
Created April 13, 2020 21:14
Show Gist options
  • Save cgobat/6cf66e89463be64142dd7b7366d34730 to your computer and use it in GitHub Desktop.
Save cgobat/6cf66e89463be64142dd7b7366d34730 to your computer and use it in GitHub Desktop.
Simplistic implementation of a Monte-Carlo-type method to estimate pi
with open("randomstate.pkl","rb") as picklefile:
np.random.set_state(pickle.load(picklefile))
N = 100
trials = 50000
theta = np.linspace(0,2*np.pi,360)
fractions = np.array([])
for i in range(trials):
points = np.array([[2*x-1,2*y-1] for [x,y] in np.random.rand(N,2)])
C = np.array([point for point in points if point[0]**2+point[1]**2 <= 1])
fractions = np.append(fractions, len(C)/len(points))
plt.plot(np.cos(theta),np.sin(theta),color="steelblue")
plt.scatter(*points.T, marker=".",color="darkcyan")
plt.axhline(0,color="black",alpha=0.5)
plt.axvline(0,color="black",alpha=0.5)
plt.xlim((-1,1))
plt.ylim((-1,1))
plt.gca().set_aspect('equal')
plt.show()
print("This simulation puts the value of pi at approximately",4*np.mean(fractions))
€(X MT19937q cnumpy.core.multiarray
_reconstruct
qcnumpy
ndarray
qK …qCbq‡qRq(KMp…qcnumpy
dtype
qX u4q K K‡q
Rq (KX <q NNNJÿÿÿÿJÿÿÿÿK tq
b‰BÀ ÿmÀãñ¨ØßÀf>jÔóÀꐢýD [½þJ}üÈŠc®™‹Øp EjÎ xPu»ójŸÎ¼TLN$Îòu¬7ÇöˆàÝ=CE§'™*Ç`j†Ì³4ÔÒP%.‡†R¤6%Ãâ`ÆðNÛníÁÁ>"œ5^«èugÍl"){pVoJ¶fË’†¬˜™}I š…‡Œ`_4`´x‚û_&"«(ê’öþbM„¢ôI ¶~·¯ÉøÒß’#Èh«9· ?þ×ΦàÇJÂR’
—¡˜¿+Ú)è×—³dyÖ”U°jN%ÝØÎy7°Ž°=£[W e¹<ì §šü-ZÅ^úØÐ;ôµN.ý„ÓˆÚn~tºGVM³ï2¢«®.ò­Ÿ@æžÉ¥½,¥™k®(%½{>áß|ãìB>¸a2<<./Zã}HÈr\źg@ï§. ëǦ(»í¿ý—#KmeOÁ˜Ž=Þz–ºXÁ)ç;³&'Ãjn òýÐ/ýC ª?s"wÏݨאjÒªŽ~™5Ð…)g¯zp7Œ(*QÏçHšTŽ>tuzª/çí³Ö&úÏôîE
̵Iœ­öxuK.<Š÷ÌX p~\ [åya=êÚb5+&X ƒª'¦Œ'YæãÝR3²u1T,† âë¤ØF¸ÒŒ¦Æak:s.ç«X˜r”p, 2¨ÂŽñÊ´|=Wóܘa{Š[Þ+„úzM¶¶ )¨‘ü¬ž X:oþ)§ëºqgÍF¬Ëµ¤ø†x¢ U¨ÄöÜÖ¾ï^g3¢§pÇ*W-m}¤"B”
ú<5¬Ÿ¦òeÆw‹ù˜?m©1¶X¶U3ÁU=üd.†$®7ƒ;­È’z¨]èG<ƒA”<0õjôÍȺ1Ô+Šxñf‡%
8@É”¸—DŒ&ºÀP­Ì¥FG…J#—ƒ¸ñÿhÁuóò_£±PF'‰0ŽT¿ŽªJ„ŠÌ]†YH TõœTV#Ñ9õS/:džò¶ ªÛD6m!3`6<Än3Â#¦ñ芗)xc|Up¢§ëÁ ’az
ü´»p¼–ëzc^YJ•ZÜD2ÜÔöEƒZàk¥Íóž2jç/Lìð,ËZžë˜Këµÿð>Äð²Í§soädÃË®Á×­t¤”`2dÐÕš—XAigËrµü£¨á 9öÜÀêlHšzŧm3‡Ýó'ý M´¸
ÃüKÔrXãkëlãl¡›&!Ôaʹ¢Ñ— ^Ûæe¡Ú­#sh„ù˜‰¢dÒëŠ9zA´Ûý3 „á¢òÆ9iÞX$«V¿šo¾dœøD¾JÌ›‡¨aÁ@ù¨XNÕ×N«9Eá/û¶–>¥¾F›xÒZB×0©H/ͧA_… LXkûá³
G6Ôý¬M¼»ZC#Ž;^—3¯‹WË{J«’ýòœOBñb‚Âì~םZîÖTóÿ¹Æ¯ON{Zu—±áÑ9jÙÉ=îXŠÀ;<IQ0Ïn@:*sP‚"›ãg°žÄ(ùAŒSº¥QwŽ‰Wƒ.<“nf¢ÃÆ×ʯ£
YŽvw©ùqxe.íê圉%Á²§Œªú¨ s_óªLK~.`–:Te3gÞ
<(‡ö‹™¹u¨‰Æ»‚Ÿ…h!-Ø£4µ'ˆ%IÓÔ¾fØA–ïo`ûK …[J€qÛÌ&Á]j=†œ·\»ÖÁh û[÷ª/ÃVw—
§hmØcÔ{Œ*OM Êf9/GØOðN
²YÌ'+ºƒŒ±œ­ä^­×õݝ5=Kz×[ï8L—­°Æ9<L÷^î š³k‘|c ^í’éX«Û¬íä£AhZ‚½*AAǾzV#­Gdx18V–å“ö7mxŠ~Áœ@~²[¥Y¶ Üø½ž©ˆüv6HnŒ<YY=îqàŽÎƒ8]C;!Ï"7‚Kr™Mü읏 ¨zõ‘ðo%€†©þê®ðâï*òÔÜê†9Ç¿¾?YnŒ¹p/¹-Þί@e¦ÇºsÈ$ºÞïd«¬/+"[MöÛ{¦$}—éŽf
Š$kOPûx«·ã…¥2¶ID7 Ó':ª¼á °p><f’,¾ù>˜ÜÚBŒU$©pmt'=êx—§Ýæ²(TÂ`>².ØßÉ †r:ô4†ž|”Œâ¡%Ã/ö?=kë”?0§~pÈü°ö›ÿ3á†Ï*6‡F¥t|d=n"€ÉýGUÊuLv9´¡®¥ºìn3bIã¾Èžæ6MÀ”·]™X€©¨¥£aÕOÿ±uŒØ´pLÙ‡<ð@0Æö(¾z€l¾aïç; &Ô<‹öÁÎÌÃÛ¼êk%>„mè‡ÚãÁMfw´diàâaÒçjC?@Qzò€E˜vZ®3Á•T‚Ûw#ovϏs!dÕa¹‡$,QÜøÚŠŸaJ[ŽV-n2ÑÏcvsg_QëâT¦Þez"BÈ‹|¬ÀÓCÈ—¡£a‘³ôYƒ'YlµññXˆ¼Ûââ+ršaÉíàσ* ¸a.7Îâ§.öÿC…hêÒ,À
ÿæ&¿“Ò¶¢GXa<Û&ÝÙ¿Ü8 káßô‹¢nÁ,ÿ=€KÕ×ÕQMXwg–Ž½,•êMàî Öç¢A 0„9 Û3º¥¼4kwÈàQ^ß«_¥=€˜Û(GËãI]ë뇁¦ð¥Ì$R(Ÿ'
Y|ɽí¶éC®áLw!þºuÒ'”ž–æ_0}]7]¦68»Ö%TÊ$ªw“lì3­Î§…ãÁÙ¥«gøIüÇì—§hÎ#6†¨5¥ØÑ“0ú§q„È ¨†–y;£Ç3µ©‡OҝoãôsêqÞŠör>±BâÛš¼Ž]ξm+%|Ç d£Ç]
âš÷ÐJEwmž=ídø ú4ºu,ùR,ªeQ)ñ +n‰Â ÊòÍ—W’ pÏ\ÇÿŽ·puìÞs"Úðê’2žâꤸôÁïËÅ ¼á+3܍¡.
GÓß<wPe”áýËÑJ¡~®X_r2À4ÊÝýyÚØ՝>l#üo1Š{ç'Zê-Ó{A”;sêÞvª<°âÖ•s¼Ç±|²ä÷4r,îP, aƒ^T—ym%; Ú÷¬Ý`Dë4öbVƒ˜$EÁŠ5¬)2ÄÍŽ­=UˤËgÊWÚ“Þ‚KÎÜ]t^wF§Yœ¾>F`¨›Žb“ÁµqÂÜÒ<cç–³åqtqbMeK G tq.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment