a recent investigation के दौरान कार्यों के भीतर यादृच्छिक बीज सेट करने के दौरान, मैं एक अजीब स्थिति में आया। कार्यों पर विचार करें f
और g
, जिनमें से प्रत्येक यादृच्छिक बीज सेट और फिर एक सरल यादृच्छिक कार्रवाई निष्पादित करता है: प्रत्येक कार्य यादृच्छिक बीज सेटएफ (जी (एक्स)) के साथ असंगत परिणाम
g <- function(size) { set.seed(1) ; runif(size) }
f <- function(x) { set.seed(2) ; x*runif(length(x)) }
वजह से, मैं प्रत्येक कार्य हमेशा एक ही वापसी मान दे दिया है की उम्मीद करेंगे एक ही इनपुट। इसका मतलब यह होगा कि f(g(2))
को x <- g(2) ; f(x)
जैसी ही चीज़ वापस करनी चाहिए। मेरे आश्चर्य के लिए यह मामला नहीं है:
f(g(2))
# [1] 0.1520975 0.3379658
x <- g(2)
f(x)
# [1] 0.04908784 0.26137017
यहां क्या हो रहा है?
LOL। आर में डबल स्लिट प्रयोग! क्यूएम के रूप में आलसी मूल्यांकन। उत्तम। –
एक क्रिया के रूप में 'josliber' का अच्छा उपयोग। –
@ जोसेफवुड मुझे लगता है कि सभी उपवास उस के लिए थे – rawr