2009-02-04 16 views
22

¿Cuál es la mejor manera de generar números aleatorios usando Objective C en el iPhone?
Si uso (int)((double) rand()/((double)(RAND_MAX) + (double) 1) * 5.0) para generar un número del 0 al 4, cada vez que inicie el programa en el iPhone genera los mismos números para comenzar.¿Cómo puedo generar números aleatorios en el iPhone?

Respuesta

71

Hay una pregunta muy similar here on StackOverFlow. Aquí está una de las mejores soluciones (no es necesario para la siembra):

int r = arc4random() % 5; 
+11

5 si lo desean de 0 a 4 – user102008

+4

arc4random_uniform es una mejor opción que% 5 –

+0

@Catfish_Man ¿Por qué? – Thecafremo

3

llamada srand() en el inicio de su programa, que va a sembrar de nuevo generador de números aleatorios

10

Debe inicializar el generador de números aleatorios con la hora actual.

srand(time(0)); 
6

¿Qué tan aleatorio necesitas? Si quieres lo suficientemente aleatorio para crypto, utiliza SecRandomCopyBytes().

15

yo uso

#define RANDOM_SEED() srandom(time(NULL)) 
#define RANDOM_INT(__MIN__, __MAX__) ((__MIN__) + random() % ((__MAX__+1) - (__MIN__))) 

lo que puede dar un mínimo y máximo

2

función simple para la generación de números aleatorios:

int r = arc4random() % 42; // generate number up to 42 (limit) 
+0

Si bien es redundante como respuesta, me gusta cómo se usa el número 42 en lugar de 5 aquí. – Toastor

+0

Como quiero generar un número aleatorio de hasta 41, así que he dado 42, por lo que generará entre 0 y 41 incluyendo 0 y 41, ya que quiero usar 41. –

+0

Bastante justo. Sin embargo, se recomienda enfáticamente que lea "The Hitchhikers Guide to the Galaxy": creo que es una lectura no opcional para los programadores en general. – Toastor

Cuestiones relacionadas