यह रूबी में एक निश्चित सटीक स्तर के साथ एक यादृच्छिक फ्लोट उत्पन्न करता है:
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