He estado usando esto durante algún tiempo para regresar trueo falseal crear datos de semillas falsos. Sólo me preguntaba si alguien tiene una mejor manera, más conciso o detallado de volver, ya sea trueo false.
rand(2) == 1 ? true : false
He estado usando esto durante algún tiempo para regresar trueo falseal crear datos de semillas falsos. Sólo me preguntaba si alguien tiene una mejor manera, más conciso o detallado de volver, ya sea trueo false.
rand(2) == 1 ? true : false
Respuestas:
Un fragmento declarativo que usa Array # sample :
random_boolean = [true, false].sample
[true, false].samplees más rápido que rand(2) == 1. Cuando realicé cada operación 10 millones de veces, el randmétodo fue 2.179s. El samplemétodo fue 1.645s.
¿Qué tal eliminar el operador ternario?
rand(2) == 1
[true, false].samplemás porque es obvio al instante lo que hace. rand(2) == 1Sin embargo, funcionaría con ruby <1.9, lo cual es bueno.
0y 1, también podría usarrand(2).zero?
Me gusta usar rand:
rand < 0.5
Editar : esta respuesta solía leer rand > 0.5pero rand < 0.5es más técnicamente correcta. randdevuelve un resultado en el rango semiabierto [0,1), por lo que el uso <conduce a probabilidades iguales de rangos semiabiertos [0,0.5) y [0.5,1). El uso >conduciría a probabilidades DESIGUALES del rango cerrado [0,0.5] y del rango abierto (.5,1).
rand > 0.3
rand < 0.7al 70%
Normalmente uso algo como esto:
rand(2) > 0
También puede extender Integer para crear un método to_boolean:
class Integer
def to_boolean
!self.zero?
end
end
rand(2).zero?
rand(2)==1ya es un valor booleano?