/ / नियंत्रित परिशुद्धता स्तर के साथ एक यादृच्छिक फ्लोट उत्पन्न करना - रूबी

एक नियंत्रित परिशुद्धता स्तर के साथ एक यादृच्छिक फ्लोट उत्पन्न - रूबी

यह रूबी में एक निश्चित सटीक स्तर के साथ एक यादृच्छिक फ्लोट उत्पन्न करता है:

def generate(min,max,precision)
number = rand * (max - min) + min
factor = 10.0 ** precision
return (number * factor).to_i / factor
end

किसी ने हाल ही में मुझे सुझाव दिया कि ऐसा करना सरल हो सकता है:

var = rand(100) * 1.0
var /= 10

जो 0.0 से 10.0 तक एक यादृच्छिक फ्लोट उत्पन्न करता है।

यह अच्छा लगता है, लेकिन मुझे यकीन नहीं है कि उस विधि के साथ सटीक स्तर को कैसे नियंत्रित किया जाए। मैं अपनी पहली विधि के बराबर कैसे बना सकता हूं, लेकिन इस सुझाव का उपयोग कर रहा हूं?

उत्तर:

जवाब के लिए 2 № 1

यदि आपके पास एक सीमा है x1 सेवा मेरे x2, और आप डेल्टा की एक न्यूनतम वृद्धि ("सटीक") चाहते हैं, तो आपको आवश्यकता है

n = (x2 - x1)/delta +1

विभिन्न पूर्णांक, जिनके साथ आप स्केल करते हैं

rand(n) * delta + x1

के बीच यादृच्छिक संख्या देने के लिए x1 तथा x2 समावेशी, की वृद्धि के साथ delta

आप "सटीक" कैसे परिभाषित करते हैं? बीच के रिश्ते delta तथा precision द्वारा (आपके सूत्र के अनुसार) दिया गया है

Delta = 10**(-precision)

या

delta = 1.0 / 10**precision