मैं कुछ समय के लिए trueया falseनकली बीज डेटा के निर्माण के लिए वापस आने के लिए इसका उपयोग कर रहा हूं । बस सोच रहा था कि किसी के पास या तो वापसी का एक बेहतर, अधिक रसीला या क्रियात्मक तरीका है trueया false।
rand(2) == 1 ? true : false
मैं कुछ समय के लिए trueया falseनकली बीज डेटा के निर्माण के लिए वापस आने के लिए इसका उपयोग कर रहा हूं । बस सोच रहा था कि किसी के पास या तो वापसी का एक बेहतर, अधिक रसीला या क्रियात्मक तरीका है trueया false।
rand(2) == 1 ? true : false
जवाबों:
ऐरे # नमूने का उपयोग कर एक घोषणात्मक स्निपेट :
random_boolean = [true, false].sample
[true, false].sampleसे तेज है rand(2) == 1। जब मैंने प्रत्येक ऑपरेशन 10 मिलियन बार किया , तो randविधि 2.179s थी। sampleविधि 1.645s था।
कैसे टर्नरी ऑपरेटर को हटाने के बारे में।
rand(2) == 1
[true, false].sampleबेहतर पसंद है क्योंकि यह तुरंत स्पष्ट है कि यह क्या करता है। rand(2) == 1रूबी के साथ काम करेंगे <1.9 हालांकि, जो अच्छा है।
0और 1, आप भी उपयोग कर सकते हैंrand(2).zero?
मुझे उपयोग करना पसंद है rand:
rand < 0.5
संपादित करें : यह उत्तर पढ़ने के लिए उपयोग किया जाता है rand > 0.5लेकिन rand < 0.5तकनीकी रूप से अधिक सही है। आधे-खुली सीमा [0,1) randमें एक परिणाम देता है , इसलिए आधी खुली सीमा [0,0.5) और [0.5,1) के बराबर बाधाओं का उपयोग करता है। उपयोग करने से बंद रेंज [0,0.5] और खुली सीमा (.5,1) के अद्वितीय संकट पैदा होंगे।<>
rand > 0.3
rand < 0.7लिए : 70% के लिए
मैं आमतौर पर कुछ इस तरह का उपयोग करता हूं:
rand(2) > 0
आप एक to_boolean विधि बनाने के लिए Integer का विस्तार भी कर सकते हैं:
class Integer
def to_boolean
!self.zero?
end
end
rand(2).zero?
rand(2)==1पहले से ही एक बूलियन मूल्य है?