"рдЖрдИ рд▓рд╡ рдЖрд░" рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧред рдЕрдирд┐рдпреЛрдЬрд┐рдд

рд╣рд╛рдмреНрд░реЛрдЬрд╝рд┐рдЯреЗрд▓реА рдореЗрдВ рдореИрдВрдиреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреАрдЯрд╛ рд╣реИред

рдореИрдВ рдЦреБрдж рдХреЛ рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреА рдЖрдИрдЯреА рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рдард╣рд░рд╛ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ "рдмрдЯрди" рднреА рджрдмрд╛рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЖрдк рдорд┐рдиреНрд╕реНрдХ -22 рдХреЗ рдкрд╣рд▓реЗ рд╕реНрдХреВрд▓ рдРрдЪреНрдЫрд┐рдХ рд╕реЗ рдЧрд┐рдирддреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрдврд╝реЗрдВ ... 40 рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ ... (рдУрд╣, рдорд╛рдИ рдЧреЙрдб! рд╡реЗ рдЬрд┐рддрдиреЗ рдЬреАрд╡рд┐рдд рдирд╣реАрдВ рд╣реИрдВ!)

рдЕрд░реЗ рд╣рд╛рдБ, рдореИрдВ рдкрдЪрд╛рддрд╛ рд╣реВрдБ ...
рдореИрдВрдиреЗ рдХрд╛рдВрдкрдиреЗ (рдЙрддреНрддреЗрдЬрдирд╛) рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЖрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдФрд░ рдореБрдЭреЗ рдорд┐рд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рд╣реБрдИред рдХрд┐рд╕рдиреЗ рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЛ рдФрд░ рдордЬрдмреВрдд рдХрд┐рдпрд╛ рдФрд░ рдЖрд░ред рдХреЗ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬреИрд╡ рд╕реВрдЪрдирд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ, рдЬрд╣рд╛рдВ рдЖрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЙрд╕реА рд╕рдордп, рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЬрдм рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЖрд░ рдХреЛ "рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк" рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдмрд╛рдж рдореЗрдВ "рдЕрд╕рд▓реА" - рд╕реА ++, рдпрд╛, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рдкрд╛рдпрдерди рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рджреНрд╡рд╛рд░рд╛ рдЙрдХрд╕рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЕрдм рд╕рдВрднрд╛рд╡рдирд╛ рд╕рд┐рджреНрдзрд╛рдВрдд (рдЬреЛ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 20+ рд╕рд╛рд▓ рдХрд╛ рд╢рд┐рдХреНрд╖рдг, рдЬрд┐рд╕рдореЗрдВ рдЯреЗрд╡рд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрддрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╡рд┐рдЪрд┐рддреНрд░рддрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдБред
рдХреИрдЯ рдХреЗ рддрд╣рдд - рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдЖрд░-рдХреЛрдб рдХреЛ "рдХрд╛рд░реНрдпрд╢реАрд▓" (рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд░рд╛рдп рдореЗрдВ) рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред



рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
рдкреНрд░рд┐рдп kokorins рдиреЗ рдПрдХ рдЕрд╕рддрдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд░ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рд▓реЗрдЦ рд▓рд┐рдЦрд╛ред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ "рднреЛрд▓реЗ" рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
#Naive approach len<-10 ps<-seq(len,2, by=-1) ps<- 1/ps^2 ps<-ps/sum(ps) ss<-cumsum(ps) gen_naiv <- function() { alpha<-runif(1) return (min(which(alpha<ss))) } #sample val<-c() len<-10000 for(i in 1:len) { val<-append(val, gen_naiv()) } vals<-factor(val) plot(vals) 

рдореБрдЭреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА, рд▓реЗрдХрд┐рди рдЙрджреНрдзреГрдд рдкреЛрд╕реНрдЯ рд╕реЗ рдЬрд┐рди рдХреАрд╡рд░реНрдбреНрд╕ рдХреЛ рдореИрдВрдиреЗ "рдлреЗрдХ рдЖрдЙрдЯ" рдХрд┐рдпрд╛, рд╡реЗ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рдереЗ, рдФрд░ рд▓реЗрдЦрдХ рдХрд╛ рдЙрдкрдирд╛рдо - рдЪреЗрди - рдЪреАрди рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ ...

рдЖрд░ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рд▓реЗрдЦрдХ рдХреА "рд╢реИрд▓реА" рдПрдХрджрдо рд╕рд╣реА рд╣реИ (рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП), рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдЖрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд▓реЗрдХрд┐рди рд▓реЗрдЦрдХ рдХреЗ рдЖрд░-рдкрд╛рда рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдзреИрд░реНрдп рдЦреЛ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдкрд╛рда рдХреЛ рд╕рдВрдХреЗрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рддреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ - рдХреЛрдб рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдмреБрд░рд╛ред рдФрд░ рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛, рдХреНрдпреЛрдВ рдФрд░ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдХрд░рдирд╛ рд╣реИред

рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╕рдВрдкрд╛рджрди рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЛ рднреА рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред
 len<-10 ps<-seq(len,2, by=-1) ps<- 1/ps^2 ps<-ps/sum(ps) ss<-cumsum(ps) gen_naiv <- function() { alpha<-runif(1) return (min(which(alpha<ss))) } #sample get_naive<-function(len=10000){ val<-c() st<-system.time( for(i in 1:len) { val<-append(val, gen_naiv()) }) print(st) return(val) } 

рд▓реЗрдЦрдХ рдХреЗ рдХреЛрдб рдХреА рдЕрдВрддрд┐рдо рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЫреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИрдВред

рдЖрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдм рд╡рд┐рднрд┐рдиреНрди рд▓рдВрдмрд╛рдИ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВред
 > get_naive(10) user system elapsed 0.006 0.000 0.007 [1] 8 8 8 8 9 5 8 9 9 7 > get_naive(100) user system elapsed 0.008 0.000 0.008 [1] 8 1 7 8 8 4 9 8 7 8 9 9 9 9 5 7 9 9 8 3 7 1 1 9 7 7 9 9 5 8 6 6 4 9 9 6 9 8 9 8 6 8 6 9 2 8 9 9 9 9 7 8 5 9 6 6 5 9 9 8 9 9 7 8 6 8 9 1 8 9 [71] 9 3 5 9 8 9 9 9 9 6 9 9 5 9 8 7 8 9 9 9 8 9 7 9 8 7 8 5 5 8 > 

рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ 1 рдФрд░ 9 рддрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд╣рдЬрд╛рд░рд╡реЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЪрд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ "рдЫрд┐рдкрд╛рддрд╛ рд╣реВрдВ", рд▓реЗрдХрд┐рди рдореИрдВ рдирдореВрдиреЗ рдХреА рд▓рдВрдмрд╛рдИ рдмрдврд╝рд╛рдиреЗ рдкрд░ рдкреНрд░рдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ:
 > val<-get_naive(1000) user system elapsed 0.021 0.000 0.021 > val<-get_naive(10000) user system elapsed 0.342 0.011 0.354 > val<-get_naive(100000) user system elapsed 24.86 8.55 33.48 

рдПрдп-ay-ay!
рдЧрдбрд╝рдмрдбрд╝ рд▓рдЧ рд░рд╣рд╛ рд╣реИ! рдХрд┐рд╕реА рддрд░рд╣ рд░рдирдЯрд╛рдЗрдо рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рднреЛрд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ? рдХреНрдпрд╛ рдЪреАрдиреА рдХреЙрдорд░реЗрдб рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрдИ рдмрд╛рд░ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдореИрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдВрддрд┐рдо рд▓реЗрдЦрдХ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕рдордп рдорд╛рдкрдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рд╡рд╛рдВрдЫрд┐рдд рдирдореВрдиреЛрдВ рдХреА рд╡рд┐рднрд┐рдиреНрди рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реВрдВ ...
 > get_chen(1000) user system elapsed 0.031 0.001 0.032 > get_chen(10000) user system elapsed 0.508 0.063 0.567 > get_chen(100000) user system elapsed 46.303 5.946 53.088 

Op-рдкрд╛! рдХреНрдпрд╛ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ ... рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдиреАрдЪреЗ, рдХреЙрдорд░реЗрдб рдЪреЗрдиред рдХреБрдЫ "рдмреЗрд╣рддрд░" рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо "рднреЛрд▓реЗ" рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрджреНрдзреГрдд рд▓реЗрдЦрдХ рд╕рднреА "рдкреНрд░рддрд┐рднрд╛" рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛? рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЕрдкрдиреА рд░рд╛рдп рдореЗрдВ рдЦрд░рд╛рдм рдХреЛрдб рдХреЗ рдЕрдЧрд▓реЗ рдмреИрдЪ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ред рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЖрджрдд рди рдбрд╛рд▓реЗрдВред

рдореЗрд░реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдпреЛрдЬрдирд╛ рдПрдХ рд╕рд╣рдпреЛрдЧреА рдХреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рд╕реБрд▓рдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рд╕реЗ рдХрджрдо рдереА рдФрд░ рджрд┐рдЦрд╛рддреА рдереА рдХрд┐ рдХреИрд╕реЗред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдХреЛрдб ("рднреЛрд▓реЗ" рд╕рдВрд╕реНрдХрд░рдг) рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЖрд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдпрд╛ рдЪреАрдиреА рдХреЛрдб рдХреА рдЦрд╛рдорд┐рдпреЛрдВ рд╕реЗ рд▓рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдХреЛрд░рд┐рди рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ ред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ - рдореИрдВ рдЕрднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛

рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рд╛ рд╣реИ:
 M<-10 #    ps<- 1/(M:2)^2 #     ;   -   ps<-ps/sum(ps) #      ss<-c(0,cumsum(ps)) #     lbs=1:(M-1) #  "  " () --    ,     get_vladob <- function(n, brks=ss, labs=lbs) { st<-system.time( val<-as.numeric(cut(runif(n), breaks=brks, labels=labs)) ) print(st) return(val) } 

рдФрд░ "рд░рди" рдХреЗ рдкрд░рд┐рдгрд╛рдо

 > val<-get_vladob(1000) user system elapsed 0.010 0.000 0.012 > val<-get_vladob(10000) user system elapsed 0.004 0.000 0.004 > val<-get_vladob(100000) user system elapsed 0.036 0.001 0.038 > val<-get_vladob(1000000) user system elapsed 0.581 0.029 0.606 > val<-get_vladob(10000000) user system elapsed 4.015 0.311 4.318 > val<-get_vladob(100000000) user system elapsed 38.405 3.092 41.578 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ "рдзреАрдореА" рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЕрдм рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рд░реБрдЪрд┐ рдХреЗ рд╕рд╛рде рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдмреНрдпрд╛рдЬ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдПрдХ рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦреВрдВрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдХреЛрд░рд┐рди рдХреЗ рд╕рд╣рдХрд░реНрдореА рдХреЛ рд╕реА ++ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдХреМрди рд╕реЗ рдорд┐рд▓реЗрдВрдЧреЗред

рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЖрд░ рдХреЗ "рд╡реЗрдХреНрдЯрд░" рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдореБрдЭреЗ рд░рдирд┐рдлрд╝ рдлрд╝рдВрдХреНрд╢рди рдХреЗ 1000 рдорд╛рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд░рдирд┐рдлрд╝ (1000) рдФрд░ рд╡реЗрдХреНрдЯрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдирд╣реАрдВ 1000 рдмрд╛рд░ рдореИрдВ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рд░рдирд┐рдлрд╝ рдХрд╣рддрд╛ рд╣реВрдВред рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ, рдпрд╣ рдЖрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рджреВрд╕рд░рд╛ рд╡рд╛рд▓рд╛ред рдЖрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрдбрд╝реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдорд╣рд╛рди рд╣реИ рдЬрдм рдЖрдк рд╕реНрдореГрддрд┐ рдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рддреЗрдЬреА рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордЬрдмреВрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рд╣реЛрддрд╛ рд╣реИ (рдХреЛрдИ рдЕрдкрд░рд╛рдз рдирд╣реАрдВ) рд╣рдореЗрд╢рд╛ "рдбрд╛рдпрд░реЗрдХреНрдЯ-рд╣реИрдВрдб" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рдеред

рддреАрд╕рд░реЗ, рдореИрдВрдиреЗ рдЕрдкрдиреА рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрд░ "рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрд╡рд┐рджреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрд╡рд┐рджреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред" рдХрдЯ рдлрд╝рдВрдХреНрд╢рди рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдорд╛рдиреЛрдВ рдХреЛ рд▓реЗрдмрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд┐рд╕рдореЗрдВ рдпреЗ рдореВрд▓реНрдп рдЧрд┐рд░рддреЗ рд╣реИрдВред рдЕрдВрддрд░рд╛рд▓ рд╕реАрдорд╛ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдХрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмреНрд░реЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд (рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд!) рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ - рдЖрд░ред
рдХреГрдкрдпрд╛ рдкреНрдпрд╛рд░ рдФрд░ рдореЗрд╣рд░рдмрд╛рдиреА рдХрд░реЗрдВред

Source: https://habr.com/ru/post/In180155/


All Articles