पायथन के random.gauss() और बूस्ट के normal_distribution दोनों Box-Muller transform उपयोग करते हैं, तो वह भी रूबी के लिए काफी अच्छा होना चाहिए।
def gaussian(mean, stddev, rand)
theta = 2 * Math::PI * rand.call
rho = Math.sqrt(-2 * Math.log(1 - rand.call))
scale = stddev * rho
x = mean + scale * Math.cos(theta)
y = mean + scale * Math.sin(theta)
return x, y
end
विधि को उस वर्ग में लपेटा जा सकता है जो नमूनों को एक-एक करके लौटाता है।
class RandomGaussian
def initialize(mean, stddev, rand_helper = lambda { Kernel.rand })
@rand_helper = rand_helper
@mean = mean
@stddev = stddev
@valid = false
@next = 0
end
def rand
if @valid then
@valid = false
return @next
else
@valid = true
x, y = self.class.gaussian(@mean, @stddev, @rand_helper)
@next = y
return x
end
end
private
def self.gaussian(mean, stddev, rand)
theta = 2 * Math::PI * rand.call
rho = Math.sqrt(-2 * Math.log(1 - rand.call))
scale = stddev * rho
x = mean + scale * Math.cos(theta)
y = mean + scale * Math.sin(theta)
return x, y
end
end
(CC0)
संभव सीमा कानून के तहत करने के लिए
, antonakosRandomGaussian
रूबी वर्ग के लिए सभी कॉपीराइट और संबंधित या पड़ोसी अधिकार माफ कर दी गई है। यह काम डेनमार्क से प्रकाशित है।
लाइसेंस विवरण का मतलब यह नहीं है कि मुझे इस कोड की परवाह है। इसके विपरीत, मैं कोड का उपयोग नहीं करता, मैंने इसका परीक्षण नहीं किया है, और मैं रूबी में प्रोग्राम नहीं करता हूं।
क्या आपका चेक संबंधित प्रश्न था (दाएं तरफ पैनल देखें)? – Gumbo
हां, मैंने जांच की और यद्यपि ऐसे स्थान हैं जिनमें एल्गोरिदम है, किसी ने इसे रूबी में कोड नहीं किया है। यह एक आम काम है कि यह वास्तव में मानक पुस्तकालय में होना चाहिए। लेकिन उसमें असफल रहा, मुझे लगता है कि कॉपी-पेस्ट कोड StackOverflow पर खोजने योग्य होना चाहिए। – Eponymous
आपके द्वारा चेक की गई चीज़ों का उल्लेख करना एक अच्छा विचार हो सकता है, ताकि लोग उत्तर देने के बारे में सोच सकें, जब तक उन्हें लगता है कि आप कुछ याद नहीं करते हैं। –