Saltar al contenido

Generando números aleatorios con Swift

Después de tanto trabajar hemos encontrado el arreglo de este enigma que ciertos de nuestros usuarios de este sitio web tienen. Si tienes algún detalle que compartir no dejes de compartir tu conocimiento.

Solución:

===== Swift 4.2 / Xcode 10 =====

let randomIntFrom0To10 = Int.random(in: 1..<10)
let randomFloat = Float.random(in: 0..<1)

// if you want to get a random element in an array
let greetings = ["hey", "hi", "hello", "hola"]
greetings.randomElement()

Debajo del capó Swift usa arc4random_buf para hacer el trabajo.

===== Swift 4.1 / Xcode 9 =====

arc4random() devuelve un número aleatorio en el rango de 0 a 4 294 967 295

drand48() devuelve un número aleatorio en el rango de 0.0 a 1.0

arc4random_uniform(N) devuelve un número aleatorio en el rango de 0 a n-1

Ejemplos:

arc4random() // => UInt32 = 2739058784
arc4random() // => UInt32 = 2672503239
arc4random() // => UInt32 = 3990537167
arc4random() // => UInt32 = 2516511476
arc4random() // => UInt32 = 3959558840

drand48() // => Double = 0.88642843322303122
drand48() // => Double = 0.015582849408328769
drand48() // => Double = 0.58409022031727176
drand48() // => Double = 0.15936862653180484
drand48() // => Double = 0.38371587480719427

arc4random_uniform(3) // => UInt32 = 0
arc4random_uniform(3) // => UInt32 = 1
arc4random_uniform(3) // => UInt32 = 0
arc4random_uniform(3) // => UInt32 = 1
arc4random_uniform(3) // => UInt32 = 2

arc4random_uniforme() se recomienda sobre construcciones como arc4random() % upper_bound ya que evita el "sesgo de módulo" cuando el límite superior no es una potencia de dos.

También podrías intentar:

let diceRoll = Int(arc4random_uniform(UInt32(6)))

Tuve que agregar "UInt32" para que funcione.

Simplemente llame a esta función y proporcione un rango mínimo y máximo de números y obtendrá un número aleatorio.

por ejemplo, me gusta número aleatorio (MIN: 0, MAX: 10) y obtendrás un número entre 0 a 9.

func randomNumber(MIN: Int, MAX: Int)-> Int
    return Int(arc4random_uniform(UInt32(MAX-MIN)) + UInt32(MIN));

Nota: - Siempre obtendrá un número entero de salida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *