ฉันใช้สิ่งนี้มาระยะหนึ่งเพื่อส่งคืนtrueหรือfalseเมื่อสร้างข้อมูลเมล็ดพันธุ์ปลอม แค่สงสัยว่าใครมีวิธีการคืนสินค้าที่ดีกว่ารวบรัดกว่าtrueหรือละเอียดfalseกว่าหรือ
rand(2) == 1 ? true : false
ฉันใช้สิ่งนี้มาระยะหนึ่งเพื่อส่งคืนtrueหรือfalseเมื่อสร้างข้อมูลเมล็ดพันธุ์ปลอม แค่สงสัยว่าใครมีวิธีการคืนสินค้าที่ดีกว่ารวบรัดกว่าtrueหรือละเอียดfalseกว่าหรือ
rand(2) == 1 ? true : false
คำตอบ:
ตัวอย่างข้อมูลที่เปิดเผยโดยใช้Array # sample :
random_boolean = [true, false].sample
[true, false].sampleจะเร็วrand(2) == 1กว่า เมื่อผมดำเนินการในแต่ละการดำเนินงาน10 ล้านครั้งrandวิธีการเป็น 2.179s sampleวิธีการเป็น 1.645s
วิธีการลบตัวดำเนินการ ternary
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ถูกต้องทางเทคนิคมากกว่า randส่งคืนผลลัพธ์ในช่วงครึ่งเปิด [0,1) ดังนั้นการใช้<โอกาสในการขายที่เท่ากันของช่วงครึ่งเปิด [0,0.5) และ [0.5,1) การใช้>จะนำไปสู่ราคาที่ไม่เท่ากันของช่วงปิด [0,0.5] และช่วงเปิด (.5,1)
rand > 0.3
rand < 0.7สำหรับ70%
ฉันมักจะใช้สิ่งนี้:
rand(2) > 0
คุณยังสามารถขยาย Integer เพื่อสร้าง to_boolean method:
class Integer
def to_boolean
!self.zero?
end
end
rand(2).zero?
rand(2)==1เป็นค่าบูลีนแล้ว