una securerandom rails objeto number llamar instanciar importar hacer ejemplo crear como clases clase arreglos ruby random range

securerandom - ¿Cómo generar un número aleatorio entre a y b en Ruby?



ruby random number (8)

ACTUALIZACIÓN: Ruby 1.9.3 Kernel#rand también acepta rangos

rand(a..b)

http://www.rubyinside.com/ruby-1-9-3-introduction-and-changes-5428.html

La conversión a una matriz puede ser demasiado costosa y no es necesaria.

(a..b).to_a.sample

O

[*a..b].sample

Array#sample

Estándar en Ruby 1.8.7+.
Nota: se llamó #choice en 1.8.7 y se renombró en versiones posteriores.

Pero de todos modos, la generación de matriz necesita recursos, y la solución que usted ya escribió es lo mejor que puede hacer.

Para generar un número aleatorio entre 3 y 10, por ejemplo, uso: rand(8) + 3

¿Hay alguna manera más agradable de hacerlo (algo así como rand(3, 10) )?


Para 10 y 10 ** 24

rand(10**24-10)+10


Solo tenga en cuenta la diferencia entre los operadores de rango:

3..10 # includes 10 3...10 # doesn''t include 10


Vea this respuesta: hay en Ruby 1.9.2, pero no en versiones anteriores. Personalmente creo que rand (8) + 3 está bien, pero si estás interesado mira la clase aleatoria descrita en el enlace.


Y aquí hay un punto de referencia rápido para #sample y #rand :

irb(main):014:0* Benchmark.bm do |x| irb(main):015:1* x.report(''sample'') { 1_000_000.times { (1..100).to_a.sample } } irb(main):016:1> x.report(''rand'') { 1_000_000.times { rand(1..100) } } irb(main):017:1> end user system total real sample 3.870000 0.020000 3.890000 ( 3.888147) rand 0.150000 0.000000 0.150000 ( 0.153557)

Entonces, hacer rand ( rango ) es lo correcto


Random.new.rand(a..b)

Donde a es su valor más bajo b es su valor más alto.


def random_int(min, max) rand(max - min) + min end


rand(3..10)

Kernel#rand

Cuando max es un Rango, rand devuelve un número aleatorio donde range.member? (Number) == true.