Je l'utilise depuis un certain temps pour retourner true
ou false
pour créer de fausses données de semences. Je me demande simplement si quelqu'un a une meilleure façon, plus succincte ou plus détaillée de renvoyer l'un true
ou l' autre false
.
rand(2) == 1 ? true : false
rand(2)==1
c'est déjà une valeur booléenne?Réponses:
Un extrait de code déclaratif utilisant l'exemple Array # :
la source
[true, false].sample
est plus rapide querand(2) == 1
. Lorsque j'ai effectué chaque opération 10 millions de fois, larand
méthode était de 2,179 s. Lasample
méthode était de 1,645 s.Que diriez-vous de supprimer l'opérateur ternaire.
la source
[true, false].sample
mieux car ce qu'il fait est immédiatement évident.rand(2) == 1
fonctionnerait avec ruby <1,9, ce qui est bien.0
et1
, vous pouvez également utiliserrand(2).zero?
J'aime utiliser
rand
:rand < 0.5
Edit : Cette réponse lisait
rand > 0.5
maisrand < 0.5
est plus techniquement correcte.rand
renvoie un résultat dans la plage semi-ouverte [0,1), donc l'utilisation<
conduit à des cotes égales des plages semi-ouvertes [0,0.5) et [0.5,1). L'utilisation>
conduirait à des cotes INÉGALES de la plage fermée [0,0.5] et de la plage ouverte (.5,1).la source
rand > 0.3
rand < 0.7
pour 70%J'utilise généralement quelque chose comme ceci:
Vous pouvez également étendre Integer pour créer une méthode to_boolean:
la source
rand(2).zero?