804 votes

Comment obtenir un nombre aléatoire en Ruby

Comment générer un nombre aléatoire entre 0 y n ?

1 votes

Utilisation de srand <some_number> avant d'écrire rand vous donnera une séquence pseudo-aléatoire déterministe (c'est-à-dire répétable), si vous en avez besoin. ruby-doc.org/core-2.5.6/Random.html#method-c-srand

17voto

Rimian Points 7805

Et ça ?

n = 3
(0..n).to_a.sample

3 votes

Il convient de noter que la génération d'un tableau de nombres comme le propose cette solution a des performances terribles sur de grandes plages car elle est O(n) alors que rand est O(1).

13voto

sqrcompass Points 583

La réponse la plus simple à la question :

rand(0..n)

10voto

waldo Points 488

Apparemment srand est appelé lorsque l'interpréteur ruby est lancé.

Par conséquent, à moins que vous n'ayez un besoin spécifique de réinitialiser la graine, les appels supplémentaires à srand sont inutiles.

9voto

techdreams Points 2185

Vous pouvez simplement utiliser random_number .

Si un nombre entier positif est donné comme n, random_number renvoie un nombre entier : 0 <= random_number < n.

Utilisez-le comme ça :

any_number = SecureRandom.random_number(100) 

La sortie sera un nombre quelconque entre 0 et 100.

6voto

Josh Points 2536
rand(6)    #=> gives a random number between 0 and 6 inclusively 
rand(1..6) #=> gives a random number between 1 and 6 inclusively

Notez que l'option range n'est disponible que dans les versions les plus récentes (1.9+ je crois) de ruby.

0 votes

Je crois que l'option de gamme n'est disponible que dans ruby 1.9.3+ . Cela n'a pas fonctionné dans 1.9.2 quand j'ai essayé au moins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X