ฉันใช้สิ่งนี้มาระยะหนึ่งเพื่อส่งคืน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
เป็นค่าบูลีนแล้ว