Saya telah menggunakan ini selama beberapa waktu untuk kembali true
atau false
saat membuat data seed palsu. Hanya ingin tahu apakah ada yang memiliki cara yang lebih baik, lebih ringkas, atau bertele-tele untuk mengembalikan true
atau false
.
rand(2) == 1 ? true : false
rand(2)==1
itu sudah menjadi nilai boolean?Jawaban:
Cuplikan deklaratif menggunakan contoh Array # :
sumber
[true, false].sample
lebih cepat darirand(2) == 1
. Ketika saya melakukan setiap operasi 10 juta kali ,rand
metodenya adalah 2,179s. Thesample
Metode adalah 1.645s.Bagaimana jika menghapus operator terner.
sumber
[true, false].sample
lebih baik karena langsung jelas apa fungsinya.rand(2) == 1
akan bekerja dengan ruby <1,9, dan itu bagus.0
dan1
, Anda juga bisa menggunakanrand(2).zero?
Saya suka menggunakan
rand
:rand < 0.5
Sunting : Jawaban ini digunakan untuk membaca
rand > 0.5
tetapirand < 0.5
secara teknis lebih benar.rand
mengembalikan hasil dalam rentang setengah terbuka [0,1), jadi menggunakan<
prospek ke peluang yang sama dari rentang setengah terbuka [0,0.5) dan [0,5,1). Menggunakan>
akan menyebabkan peluang TIDAK SAMA dari kisaran tertutup [0,0.5] dan kisaran terbuka (.5,1).sumber
rand > 0.3
rand < 0.7
untuk 70%Saya biasanya menggunakan sesuatu seperti ini:
Anda juga bisa memperluas Integer untuk membuat metode to_boolean:
sumber
rand(2).zero?