From 300e2ea3494f9a13ff4c80742d9e8ea7334baf5e Mon Sep 17 00:00:00 2001 From: = Date: Sat, 3 Sep 2022 18:54:56 -0400 Subject: [PATCH] add normal distribution --- alai.R | 2 +- distribucion_normal.R | 98 ++++++++++++++++++++++++++++++++++++++++++ mysql.R | 16 ++++++- out/dnorm_coins.png | Bin 0 -> 15876 bytes out/dnorm_time.png | Bin 0 -> 17313 bytes 5 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 distribucion_normal.R create mode 100644 out/dnorm_coins.png create mode 100644 out/dnorm_time.png diff --git a/alai.R b/alai.R index 2de5694..ce1ceaa 100644 --- a/alai.R +++ b/alai.R @@ -2,4 +2,4 @@ source("config.R") if (!exists("dbListTables", mode = "function")) source("mysql.R") -dbListTables(conn) +source("distribucion_normal.R") diff --git a/distribucion_normal.R b/distribucion_normal.R new file mode 100644 index 0000000..e714c06 --- /dev/null +++ b/distribucion_normal.R @@ -0,0 +1,98 @@ +result <- dbSendQuery(conn, consulta_frames) +data <- fetch(result) + +get_variance <- function(dataset = vector(), mean = 0) { + sum <- 0 + for (item in dataset) { + sum <- sum + ((item - mean) ^ 2) + } + + variance <- sum / length(dataset) + + return(variance) +} + +get_standard_deviation <- function(variance = 0) { + return(round(sqrt(variance))) +} + +dnorm_plot <- function(filename = "dnorm", dataset = vector(), title = "Title", xlab = "X Label") { + mean <- round(mean(dataset)) + + standard_deviation <- get_standard_deviation(get_variance(dataset, mean)) + + possibility <- dnorm(dataset, mean, standard_deviation) + + png(file = filename) + + plot(dataset, + possibility, + xlab = xlab, + ylab = "Probability Density", + col = "blue", + main = title) + + abline(v = c(mean, mean - standard_deviation, mean + standard_deviation), + col = c("green", "red", "red"), + lty = c(2, 2, 2)) + + legend("topright", + legend = c(round(mean, 2), standard_deviation), + col = c("green", "red"), + lty = 2, + lwd = 1, + box.lty = 1) +} + +pnorm_less <- function(dataset = vector(), value = 0, word = "") { + mean <- mean(dataset) + + standard_deviation <- get_standard_deviation(get_variance(dataset, mean)) + + probability_text <- "The probability of getting less than" + probability_text <- paste(probability_text, value) + probability_text <- paste(probability_text, word) + probability_text <- paste(probability_text, "is") + probability_text <- paste(probability_text, round(pnorm(value, mean, standard_deviation) * 100, 2)) + probability_text <- paste(probability_text, "%", sep = "") + + print(probability_text) +} + +pnorm_more <- function(dataset = vector(), value = 0, word = "") { + mean <- mean(dataset) + + standard_deviation <- get_standard_deviation(get_variance(dataset, mean)) + + probability_text <- "The probability of getting more than" + probability_text <- paste(probability_text, value) + probability_text <- paste(probability_text, word) + probability_text <- paste(probability_text, "is") + probability_text <- paste(probability_text, round(pnorm(value, mean, standard_deviation, lower.tail = FALSE) * 100, 2)) + probability_text <- paste(probability_text, "%", sep = "") + + print(probability_text) +} + +pnorm_between <- function(dataset = vector(), min = 0, max = 0, word = "") { + mean <- mean(dataset) + + standard_deviation <- get_standard_deviation(get_variance(dataset, mean)) + + probability_text <- "The probability of getting between" + probability_text <- paste(probability_text, min) + probability_text <- paste(probability_text, "and") + probability_text <- paste(probability_text, max) + probability_text <- paste(probability_text, "coins is") + probability_text <- paste(probability_text, round((pnorm(max, mean, standard_deviation) - pnorm(min, mean, standard_deviation)) * 100, 2)) + probability_text <- paste(probability_text, "%", sep = "") + + print(probability_text) +} + +dnorm_plot("out/dnorm_coins.png", sort(data[, 1]), "Coins Normal Distribution", xlab = "Coins") +dnorm_plot("out/dnorm_time.png", sort(data[, 2]), "Time Normal Distribution", xlab = "Time (s)") + +pnorm_less(sort(data[, 1]), 5, "coins") +pnorm_more(sort(data[, 1]), 5, "coins") +pnorm_between(sort(data[, 1]), 8, 10, "coins") diff --git a/mysql.R b/mysql.R index bd7e142..c53e9e8 100644 --- a/mysql.R +++ b/mysql.R @@ -1,6 +1,6 @@ library(RMySQL) -conn = dbConnect( +conn <- dbConnect( MySQL(), user = dbuser, password = dbpass, @@ -8,3 +8,17 @@ conn = dbConnect( host = dbhost, port = dbport ) + +consulta_frames <- " +SELECT + f.coins, CAST((f.elapsed_time / 1000) AS INT) +FROM game g +LEFT JOIN player p ON (p.id = g.player_id) +LEFT JOIN frame f ON (f.game_id = g.id) +WHERE ( + f.id = ( + SELECT id FROM frame WHERE game_id = g.id ORDER BY elapsed_time DESC LIMIT 1 + ) +) +GROUP BY g.id; +" diff --git a/out/dnorm_coins.png b/out/dnorm_coins.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c9a0b53400ddf7f6c5e89edc26fb8f7cc2894c GIT binary patch literal 15876 zcmch;c{r7A+cv&Pq{vj}p$J7Hgv|3CB|{k_Atm!XmZ2pfNhDK-kSTNKG7p(&G7Fi< zW#&7U>Q2w|d!G0A$NPP@?Y_7BUh7)dbzbLroX4>r`@WyP*Og@Ok5e8;AQ1R+vXUwY z1jaD>pJSNt$#UL>as=WGLQYal)gfYTz*+m$+8*{|v(@cKMW0!8Wr@U&dMh6D7Cpi3 z)h1c|y(FjddK*a>k^d-Jc)a6s+l^L5zjV6*BNO!`8Iod;ThB0GK0EgM%o9;R`c#fG zk-Q2DpO6Ml0WQDh?M^z5tnFQoWp2D?7maETJPd@#Y8X-o#xUjMfsJ@^9*Y~{A$c|i z199#+20r4n`&ygCatk&C474N`nI;W z%htNIa&vRpM8=yU1vuY)t*`$umeSqTRd2}oMiI5Qy}(NwA>^E=$mF~|moKolW7b{H z{C#Tb{5E@n%I3ycVA=M3(fY!W`R0v>At52(zklz0np3=LUbf2=T!)QE-ZHq^tFX91 zhV{~b357V56dN1+`Sa%o-RVR(*5?P>5B><~gm=aQMLwv0z!9pitgLKkP`DJj!Y3y# zUar7iGCn-~dCYn_MX$_FK4BR(*Kgb$CFG2H_~_BRhMsF@HG5TU5JPjMfc?Z*3Oc&z z3HSPj?%)!yvwKfOk6U2xS~#vW@@D81P0Y>dsH)nmOf(i33mO|wK7Wpf+I(oOuC5OE zYpksuwtV^F!-tIx2ioWt_WgNg0`LfZ{Sjr6UBgF@N@2h&lg%s33B$WH_mO31USMLa zO2nt8&ZcCP(#Hmh?Df>u`69m!42WzDdkzoZ@t2m6ymIA=Lg*!1dwUI*kP09Cb~lbI zySQ5ujc+;Mq-y0q8ggA9hzk@peei&alvG_)^TTd!Ftai?Hg;cMpWVWs>(0i~)vH$t zDBr{Q;PMiiAHmA8AC7zxf$Tn7Xb1PM3vbMBzoXhQ=otxW6&25i7rHkUX zt*@z(NmdP@yz=4W$LrfYaQWu;c0b&BuFrOLs&%p{@WciH;EXlQ1h0-hd^dTg7M=T)`uPm++?%=<4eWM-r2eQ1~RLr!&zj zC@A>o%gf6nYrlT|T3%k>(9rPp>vJSbP7TM`G_CxHW@gtE6`2&nIIPBH>7B-dWK2y> zdlbGE*(+}on8SNYo}#5~;`o|+I~zHbmOp5!k3Cm-+*^FR?DasAy#xt+k2Z?C5js?14x{Ma7G3Y)6h9$qi=LD~-?( zo1J|~PswKyW9Ktg6G+lZqAd7@1J4+@X|iqk=iHEBZk=6jCXQ$`4o_O9=_ZBCI=M#m`RmbIXM7=#d-wLb~y*(x_esL?$bHRVRKk%4)gt$fm zmWlRkY*rR$qiR#jD1qsXlUm7`c#gsm;_Bz&jl z2Z|)eXJ-0g(RX%S$jHbD2m+Uvmw5*rB%J$_+F`w}UAs2qFy`;$&DTC9qG;ao8u253hvefFw(obyE8K<3fRwU7dvF?knotUJxE$vI2n(Nu}f%a zZOsrXvbQmoKjij6@YB5pQW=>VxnQQtcoLG39i6o=h4%OMwz}U9sOacW-IgA!Aqffz zQPb5OgjcP3PI2@4^^f`$*viVvbN6GEXlZGQh=`1vA~t^{M(4yQWm!F|tEy8|UDBE|FldFSF!*5tiNZ(iHUWS_d zj=p`hKb20Ao!Q8#u(8BwH_aluwCwDa$47AL>+7WhX?3);-iC+wl}n6{jpeHG%oWi@ zzbn|?UgzcJ{`!V%vQtCv9{Ky?;^LBKi}Bi^66f`L!>s%5?=u7Qw>E{7a0b4?M=B~R z$f;00w*tGl@Z8+B&ySC=v9bA1!J5M3nTcow>{2(6yk*x%W}HPzS2nPoDc;%H(JgTz z3MwdY+~3<}yLb_4GW_{*XJ;o~#dBJraHO`jc6mibZld#BUUMTG9Zx$8ix%N`C}LB% zn!;xjk{?p`-E~MC`t`3a^yxL~e6n~fgxIFcLDhaxOUaSRDLd!Vf)`;+;nS+?Ip3e3 zfzmN^a@+cm7?IqSp{FdFmzUQpyqyXK5tXw9Y29RvGUx5veuz{Z9i7~Nc*f<*olToXH+D~-(Ej`)zY`T6*6Ip?M9s+e$xKN=`JC~!Cgw5g3V)el-`8Tq0W zsLFh1Gl*p&6TG{ruFm7W=R!b0V796Mqb&hyXP-!+^<>jaMg=IFG1t$#xVQ-K?^w?* z@nCaTaG)0qMlm-#d+NA%M#ciH6JH81!Bmm`f~oR+PV#CD#p=na@bGX7E~E1y^btg38Z!1THP$$-!9wQa+;IbLkH#Rs_OYuj~_qo8~Skto7)+;N!4tJl0GIuxjJX% zI2i(Q>`3?jOBnMHIJyU*Vh-lgZguKLW+DQy;pgisck5PIK|#UUsBg8HTYwGf>gr(R z1_YQ0AGKSz9KP3wEREIp3CXgywY5P2Z>`N3Bbj-#JeXo3|2IdA=*?b0eE!JE$%&dD z5V%{7mx*(~YHg+)e|`KDc3No9twMLb*|YKVep#il8I@7u@&*Q#Q3!rqtQ_5@C`Ny2 z_%8O9{D~yd*$eUGtM@aRJ(Mtip}UgRX{q<`4G7Mj&NJ-yE<_4>zgqplfWm5#BOhYN zWz^rc%Vd5*D6+i5Ad;E*;${4~gC86JM1fr=G^sC|SX#WR!VnY_ojJ;O^7Sr7g0q{H zpC|nHFfJzLs{P`bH(}Scspke1I4Mf@3VV)VkXNJYq4V68k#4DjAJNl0p>9+1zfwx* zd8FHW@4LKazS8XDbC_%aO3eKHPJn#MGyFWd8c=iRLj8oiHYh2lR_`w}lpW0(PRo~N zVz|7AuRx$l9obOox@~1;C3%|?1K(wOKx-Bk;h?6XLQF;VHZ1IX{q!-Dl9(znNl8*t zL*sP~zcF8CB(gf-v@_EMQ9lX7`>%Myr624IC{L~lw_*C|Pc%gqIjv1YF*vbEapftM z+G?zsWth;cUdaUvFJ&YgzWY)wr~kjqOP zSB!8HI|-U%#M}b{Y!+x~1Z5XW71q{Hkusq~5ykS#%KOU=>>=_ADJe6MonFa*PrjMx zMLn!9g400)liTCxd4esVX>_Goq`TA-kRrU|hfdSSIHE9f&XynVu%En?!{@>LsS*Rx z@{Cr1|_-ju{abW$lO)L@0ge^{Abg3`) zmGGgXr)6|X5^zyuWTYBP=O@cCuQHvZ5H2xVP}^Kwb^w2>UcY`OwBhdEyGLme7-?iV ze79OghsFKkvTK{0qpv*ZiV^b!?3Z}$?d#}h_C>^}8&d4md1Nw{m!)KaLr$9wDt2`V ziWH1!Qp*IYh+zn=Q~T!J^e=_yUIgF;e^B|eva(o?1S0WLen=$g#h9L3QAhd+*#Z_V!udnG zGMMSNR+OjPpVHIU_P!aC!oy}eslPg>aP$4n8j2xs%02!{oU}hb+?jXCh0Clj2cY#5 zmrFnT&VtUCJCh>kf_FojBwvNeYURI_mYA3*X46NO@L5?+4Sy*c%*$n@qw6c_chFrS zgd3ae-?Q1N^>khQf+L?`wYRe=Ili#qzBb*ty}s}k*TIaW?A+|QpdeEJ6ON;z@sZ4r zF{7jVCC=M+RL!=Cjq%aZEX%R#+1Xi<{hbxM{S6sWQI8it6pxt*Q7HRWv<4|&tNZep zoASd4`UelPa>gBTC35(5-QGwCoHLuTslaAoiIof9(E0KLy#`E55gVg^>^@JQ7Jd3O zJ~_!dFU&$dvS)t%_U-%T=FP$?YHIh4jhTB8E}S1oWgcB}blkPQ>mNyTnsj+*$H&An zRa=e{-_c3MRp{!~*5sSgws#3(ch=(euN@94;Fc7+qJ+#F<)>Q=-tpc*KETQquGsQ6G(t3SCwv!mY_aEHB0gBto@^S#3$RmAyF-a5(RTD_3tfV9iXcdt{ z<#i*M4-Y>hsoa|sXHhZ+`D37n*EyQV+Ipo9daNkH+hLs;i04F)R9g=vRiaV6Ex<&k zxtf!71w}C4 z!b(Ok5ue@HezZT;4}*P)gc1Wi^*XFBMlfN~xie>>CHu#_ij0UcRL7nx=vI`kkgEx6cak^70A_7QcTlor=Ma#deZ3 zhwoF%C?X1JhfPCBcqjD-9^%ZgcSkhS)VUh`(TCbk$axqLRF`yX)%e3dro}t${O#UYO9h1+r%&m2Glz za^u1d4`qKoRi|GVFG@k4XmuJ z4_q*ABM>G^NG=l*k+LUGo;fdN@)YuJ+@U8e{I?8k|Zg<>&PUm&|5Wc$aD zR4-q-f`9TPsS(>*^lbc^usaoQ2h0w-YXAOh_^Hi7r9e*@L@CyPDDzNv-~k6${6-On z9+<m*pDWbQ-?=|_wQFgNh43KT3YLV z6={ZK<~j50rG_bUR3)X`WaxsDFI?e%k$mCwsp}cK2F+NA*m8;--Hk_JL&lGkh-jclCOy4+^(N<^(mGO9rGH;8+C|*g*U&(` ztIN>rnnwEJ$71EE7H`lGlquumceIEyG8*~}okR$(dYv@M)okQ={@HJt;OCs*lk83u z?Sse!RPE)3Wp8f}tc8}AR)O~X#6+G!)w9AvehhV9HP9V%%c+@6B6F`(B z@eMH<+2qK`J5`pHloZIA(A>QY4nBH|2Ju-Im#D?f&F$#XqX7A#)w;;eu92(?Eh?bp z_tjcnqJLrpQ%4HetY2|Gd|K_+N3x%5_$>(&cuS};L!T@q($r^m7+{((u!rgXU{xY| z1E8~LsHmJ521_P#{YOU);DYG9s>dEo^f`Rt5(mYj@}h2WPela-KmS&__X#t1RX4Z2 zjIzD@s}7sX_qZzQ5rWiM$BSZO&X}7o*a^jFWi3y4rbKwEsj1o7+3hqYu>XcdP>HUK zzJ2os-TuruAp_BW1e15<3y*_NRt2 zk_@uPW;I~z5yP(1yekXAK&?m0P5t8;_INGOuIQv;9h_+ICeF{1`@>Y>7&6Y(Xa4%@q!S(1y0M+!67~| zQLotHG8@|*^nR9>mgRxxrTX)OwJ)IvRYqjoPMAFIxhac_#^y9vih$IWk(QqC%?7qK zE0BOz&;i;BaeQpV;>UJN>=H=(z;kA`7o?{LAfY-{2hy>BGg0yR>y;tCwg;g9ciY{< zy%HF7Xxm)FbeiqS1hTQWw|C;=ac_gEmUjk?IEcj-Q!D%}phF~2k&@<_4+#fNTqgdr z{E{{7xIs;670@Icv?M2o<$^tEc^>uvoda1V++Ewqh$%4Tb!e#lTwh2HGZtdXB^+z@ z{k6B)C#gT#&ZxU}pJ!v!$$NO)&JLAyBW@7bvllO3q^73s?QSzOGZRqry%@^HBBoMU zS~B!0LHHv7KXZ)9vVypXhzMjnSf&J(A7f)&4vWJn8W~2$#sn0c@eB{XzU5U;Q?IG4 z9G{qQa&S8@vYPn%#*dV3x@U3pP?h0t!WeSfo+A+1`S{_(^jf!`h}+JmH*b1> zv?ubK52mhD)&$V7LS+XEYHiKd+S)H5;B~`y$N*bD_*DEHR}rGjiE%iQVPRn*A)PHP zi{C@_=KFG485!?^j6icc4pP|t`}ZYnV7>v6p=nR#C7r@}m1O?q90Tz`nXE7)wy(dR zPQ*<+K?Oh_q^&sMd>9@S@9%8`=~^5aNmIcA80#eb;o@$B{xRe@85tm$7WP*ZM+rJE z!^}eKG|?Qbr=r3MAq=QDAeD%g7UEzHXj;LosW=`Uoi9UV5y<8@+UVj$<# z)&2129lU=26wJ~4_e^Kcei;}TfX&y{rG6>2sGuP2R;G9nPB2k&YCI9cREUO2U2XQz zu2%L#3RiD!alf%L6_xY+;n1!nh$U*I#&o9K@8`)h#$-rjhzX>=x;!4NeDcu;h6j>T zQumCE=D!tWA8^mFUcY8yWc)rcaY_5rM+RlqVzYjesq1ZnHDhzv=-d@?aRDW~%rqe? zC~B|vmy~P>ZBM#!iVB*^JL5Lmo^GJnL_5zHz}5?2R#ojOb9cXS1BlfSlun5J_l1Rp znVFgC>H3D16BApuPUA%MTPal|BVuZ5^nvG&npm2sskhw?Bx==TJE^S9Z!7=J_w&?` zV^a{gKthA8RoZ1?WhE~shf6?UOs9D5nyrO}$;gc#KYl<6j!_F*PblJKs>ox{qXIl2T+l?>W}5>0(rIsB zU*DVW6@C5uRu&hpvxESD>FDTq@7_J2qSypMMe)t%x>935uKT{NqBe-z>YVL@ zlCG}J9OZrP)qZn>M$DJl56F7^gOe}x_TN-H{pRghfcVt;+bhLXmklamX2z`w{QMNg z99N;M5Xe$=b=_@^lR0tX1SlzLENW$LyO>9gtbOt#1}a=zyBPGV0K9gwf`Zk_*q&$I zqtP@^OZbo<$z*QI$r-LGeQjiX@Z6r^h)Jm9$^@HU={L~~(^v+BJc?oa=J)U4gH|%j z0P{~lLGkY0yW)&{CbYDYq{bI+t;F=Z(DFd$D%qfKO-#i7f#=dfbQx3^$#`|Z8!0q2 zH266d2c^~F+BN^jQFMsUJwK9q2TEN9E?)dPI4BHJKVBCMpql04#c|gW4-W)`lJT$d zh=NvQ>ey6mt*pKM`b>8QNl-?Hxu~e9q$HN!Ome3wk$XeU+qr(ZOJvT+k{8hw6`FIy za)!!lqdh8n?bFumy}@cgo4hd3$>U$!la}1o}a?QKM$w!#C8I zAu}WRn_`?-r!1d!e%yx~!%yB4IiXa(@9UqiyzJcg zS68)5T{fYOt|C|daDY+E&UKXQQfptnoMYtQBOz+sG9KzR*&GcyR&bI5_@$<35%yu( zYSI2t1U=AJSJ4#OHB8O8R%o6rgv&v2E-lsl9E3o4Agz5p^}`|}A|~iMT3XI@2ufrA z>6f^1O%hbD8dM@D=nT!w*#7m)sb|lQXHI~&ev-zXSbPT7=>#wnFficY{sukh2FC_# z6^M4F%;$In2n0woy{%yV@DV`X zK_d*&8N#Ze`^n-g8(W(D{@&8kQb0g}^~BfSeDfjT2fU&Q5X0}*K0j!IkB?yEEv~M< zsxyRb1pCp}#^zh*-KQ@qr_5ws?D6TLAS{ z0Q1Z{NENR`_+z%l4*09u+FH=W&xgpPmcDr6nD=H$C4B)TWd~qwrYkLitUo;^CAi@` z#Czj zF=&vyDRB`9Bp*fzh({o5fN-LgdjC20Ut@qSr6aWpga0tL4#&#L&tLZxo}cZ__MyW@ zAoddFMBPEjq4(E+h>pvsuQuN%RtW23Q>p9Uh;dcYN^%+)m^4ymKJ{pdk*ma`;FR=W z1jqrfj&D7Pio(qA2*x!@6HD%=2V14_QO`$xpu1?_E68-6zj!eM7#&anAj2NP#4NO% zGc`9CG3`hia^EkxTX6(oV+cFmJWYZcy#sua8$axzlnh+7w{=mxjE(&76xEWZqXb$}+(a}Rd;O|$G zC_kqY8SLr;a0fj7xpU_}6%}b|Y64KN|8B+0n}3>By`!_!_MyYlpXMx>$+!g=vgauO z3pd|$(`x6K+`#EZK6~~dDX9k}?*o!ZH3ePFsdyi0f3g?>ZbI^7!2EbtQ ziYNakeNZL0{hmDo=1m%EYE6d@kRwVrMo%<-0hw?usJuB4x&zQ9EcDq=4*Lcm9Y?&$ zU@KEoQ-dx8g35NQ3>})`rn${<`LZSGq0kKVDNz3nMy7!lbX~4vzKR0^17HUMPCSvr zIS^Ub*a$pcT6#Jym(f?4=Nf-_^>3djxK>3#s9Iq?f1VFQUSD6|(Xl{2;TaNn3=fan zY-#-=v^^{#&#YU@%Q5i@5e~ADD}gkF_OGhFeFfqRtU`diL)rD_hdKWZW6-!5S^iv> z&{OH*fF`*Z4bJ|S7?aD#5@$vHN>Ft)aux z=*N#7&d%GwEAMX)?O$SNj}~&~SvUb3f&2mg5yUa^8eMA1@!45zRn=EPK}3Xvi_<9? zeZ9R)xlx*FT?Ot@L1?W8-G-rIg;!5wI?141l9?rf=v`GSHM)yDYnKg6T>teem?DfV zEiVTVl5KETqb5(5=Cz#VV93(97iMNfYf(G zkzO>J4wqe*aW9;*nLJsth-ubm7-NgT%CfnTrlgIjm5|jGSm!*ViM%SIt1Bs4;@n;vWV3oc zkkvy{$bwhENB_}KX_`v1qN0t)QeVPmq?gZ19rNmRO8j*~qT5>SGa2nokuEsgusfg? z^aJLu&~|(RrNK|qI#_awymsOEnH&7&>tL3E*!q~2H9b(25A7ZJoBFr=`bRmr;Z@rGcMfCdH-2B90LoW##|cNTca5otv;v$@5Q3NYH~x$oNEzy=E> z+dSjR6DRyyT3Ya_cx-&GiQ(h?EYSd(7A0#4et<**RZ&q^*22c-VX?w@VC2eAGMW8i zC^S?t(6AhSdrSlefv~V(w}k#*x7Z;F>BG%f{gC(1fv|qT7`NGJd>;>36tV^R#uYx z=k9v^K|bL-FRwEN-@bK=5ZodK6!YaK7=L!x{g>r<6+58z_T^JiQc?~v(F2DeHi?OF zn7V>%5+dKZ5z7ME$KRYJ$kGhg%mR&)(UL82f0zVmOhlfi91cJEz)XsVaY%jz z3Xrbtu&nzJ`F>ah`K1Q`V$9E=JreQ}9>TWMug=db9|A_m_E7+R(D27zY$P~DWmZzG zKFBCB>QuG0%|+p3sN*0wR6tn)XXFX?;^DC|>#fxvfF*%4Xzc6L-1Y%oj9wt(sBX`u9^rKE6+FEt;k9-zYjZH$YHJ3l}F`t@s=aI1oE zjg4ki&raLg+G3`jMBIu0pOl}!^p&%hEN6$x%0Md0Tuc2I{Rc?b-zXX=XJ{e-Me&u9 z|I^@ublh8L%Q`s>$|z8e&HG3MqK!dPl$nW1=?y32rAti}6%xs+>KYo8-@ik%%gD@} zznBDWuWRAlzSbQ4{Dq%B^}MLa!~YXyFu%JyJI9Y751pp1m?GtgKv|oZ=D^-V_ML=P6_!9dOU-L__I^prPc6DGv{i@NmjZ z^@a0?;_#=|hR3joUYKL{#M6hB8zu3QheJwM1w9h7-hT;Q7R+aXhQ@`0^SjP4;{U{E9Zccd6RRkNkIX-PeLGpuS$-+1VKt^x*@GfPlak>|wNrGS$j83eA7moH|1O*zJCx@nMP>do zgLoaSZT-otf~S50qk>-(7+i6{YrIzscm1rxt@Um{XyaYYu=q&{r*Fl``CXG(b%HAlp^>n zM=O0JJi+Av=2stTQiLcA)`#9V;o;agIN5>VD=;!N^z!jJ&V^_`pi}al9^AX3e)9X* z7zzUddWwH&l{0;AEl}tpQrfByOYx*F7#J9kWew6!BF?yq}dJJM_8D!Z|F2 zL#-S-Vf?}v=zGKt$eDcm#kU+dLHhhz5Qr8|$Oh<~45jrFl-5P8|7lO*&U?4Rh<|UP zFBCsdM;xxPV4XUoDf~Jvaae%^e)b=O6l4Ofp9d-qUxC)m{>;p;6Bd6ZjQ{l<1)}?~ zJ0<1$Dv(u~)q<`(nxV1s&9EZz{=UU3WR|o7@#{yTk7Yv%9 z#QpcZg@Nb;lkR!$)r|amoX1bT*K+9>F%-GtVzGLh8 zkH+=M0_+)JG2D23Kug{>U3#GV@;fA#WZ`PH!S@af^I|v(w+1Xi*zu>cxOVI;M7q z!!fD%$6=SCI95)c5gD9P5biN;oQEDqN=hoi6U45LVNzj)1D|ZZk^RzW6`kA0W9vou z8cd8n)Oluy_uB(IWudi>n~je~H@nOB)F4&-OYYIhexM589cWzp9EJoC2yRA_2P@5x zgN1ij+aW2;IjI7f17{V0I_g{g0(2G+*H^ju=Y4(dTDQnYH8+3+0wKZolRbNG@cWDj zx8`m2AL<4KZNl~ogSmNmJe6E!x3u0G>gywo)02}kb8@)T`;X<6adYzWk~zPyyF*?L z+)6`33LBjZ@akY#7hJAo@S#k|22e!o>}9vzKeT5z|LtmKqDizT4nZj#7BWz7eN?^C zd>67JtPuR4FdRCNm6s=WeugRl`2olqcGM}n3XYzSbO*T!4PHi+#6bZsKY%9Q2hzKI zp*^u(#AALt?0W_V2HH?WIpKw?(@K__CCK6a68w6`kDXf9*4AbPaJScHm_PgMg0(AI zmC^=xP)$Rlzo&;>qcyj*v@|cTOEl7;;&Qb+Z8e{@nOT}5Q!rJ(LZ#fe0^6@tCKpkC z1R-kuKb_CAZSoLy-O33JREGK1b=&-oDrNGx<+igV11Bj21d8AshM}>spODfv+8v+U ztxMwkEUyr(gkhKO0!-j^*;p(u7tgG@A3Q#82u2DZF2JfB`ug=VA*C7Noy7`hcDYL* zoEmx=@rH4U?ZUEK2e!rjo+}(+03HcUU`25DL@(Dgq=zJT9(>IpKLUqjn!B~&zF!2$ z9X@Ubl>+ieRaERX=!?*O8Bl+~{g&>c`nimoPC3VR0rtIp`!?`?8L_bjP||^II_(_$ z8eHw5MzWrI2Ir^dh<>;$@I>FHA9@+d5rY;G92W1)^@9fwEM6q`QF$9%GZ_-%;yLCT z>gsSX0JwQe8PlTi@p1GK8wF81@Xo>srR_W*OITQl;RmwH$_u^OiKsbn0T58}D1LL) zHUe-+YA2TxQjF~OCNPw0F7*kkSs1zmm=CV)PNkJhYI5PlEqWk{tI+)FF#7X-K z-B1wTp3Oc%cIo5#hgW;~hAVFvm)Ux8j}!tRunZ+hP`Rz8m7<Sy!v?L_ifV>Vo z>`HGR_GVS}_Bw*>4ZHRvP!5BGgRuYASwaAC03~qx^l1Zv&Swx88Jf8)Kzn}pU<&pP z(921kV^Lr7;|KZmMT-gx_u$M)Up^Rw;DkkdnRB9a94XmB?E_mj*u|w4rGk86dxp!MUW$s3cpEMxo`@%YURJAt3=}4)!60Yu#kD zd%Ai`r|BB70}!{JrnzNhWjzwP1|3N^08c@9_p9JSPLr)w2PFtc&5dOcqE;mNlOgq5GMrBiWUvy zQS$qONw=n^225N1-QC^g&oeU{ zS0afZmCORaP*%1NsgTQ1OM@lOAh)=}*%{!ffWXr& zw2`ZAJ}P`OF84uUb#Q@WI*kDLq~3g)(LgE*7^9F&rz} zfM{k1!<)l6Xf(i&09OtJD|Xv0MBM>#K|;b)KEXglohjHdYHoeV-F@?W=*r3p7?;@aB34HTmn5ZSODfd%SRDc`u536(bbMJ3!TmU##)cLgP+&fRRH+1afZh>!*4Vf>UlTCD zqJ0gCN@+<+plww`N2=-iK||M(5pZcsj2H|JO_l)1G*W{z{L<1*3s^kj#|qT{+lQEc ghWzilChg-mVxCF%u^V>+^%o&0r6idye&@;m0XCZM*#H0l literal 0 HcmV?d00001 diff --git a/out/dnorm_time.png b/out/dnorm_time.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e0fdf9ae8f3529d5dcc0d5e1fb433bced634a9 GIT binary patch literal 17313 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 literal 0 HcmV?d00001