2009-09-04 14 views
5

Estaba usando la función arc4random() para generar un grupo aleatorio y una secuencia de números, pero me dijeron que esto era excesivo y que debería usar la función random() en lugar. Sin embargo, la función random() me da el mismo grupo y secuencia de números cada vez.Generando números aleatorios en Objective C para iPhone SDK

Llamo srand (time (0)) una vez cuando mi aplicación se inicia por primera vez para sembrar la función random(). ¿Alguna vez necesita resembrar la función random()?

¿Echo de menos algo?

Gracias.

Respuesta

2

No, no necesita volver a sembrar el generador de números aleatorios. Hay cierta uniformidad adicional ganada al generar una cierta cantidad de números y descartarlos, pero a menos que esté buscando la generación de números aleatorios de nivel de seguridad, no hay necesidad. Para la mayoría de los propósitos, un generador de números aleatorios apropiadamente sembrado es lo suficientemente uniforme.

4

En primer lugar, ¿quién te dijo que arc4random era excesivo? Lo uso en mis proyectos, y (a) cumple con mis requisitos, (b) no absorbe recursos (al menos cualquiera visible para el usuario o obvio para mí), y (c) fue trivial de implementar, por lo que realmente no veo cómo un uso similar en tu propio código podría llamarse "exceso".

En segundo lugar, srand() siembra la función rand(), no random(), por lo que puede ser su problema. Y no, no debería tener que resembrar el generador en ningún momento durante la ejecución de su programa, una vez durante el inicio es suficiente.

+0

¿Cómo siembras la función random()? –

+0

Pruebe la función 'randomize()'. – Tim

+1

arc4random() no es exagerado, y le dará resultados sustancialmente mejores que random(). –