2010-01-03 16 views
5

siempre cuando intento generar un número aleatorio con Int = arc4random% MAXNUM la longitud del número es tan larga como la longitud de número MAXNUM -1. Entonces, si configuro arc4random% 1000000, el número se encuentra entre 100000-999999. ¿Cómo puedo obtener diferentes números como 78, 476 o 4842? Aquí una muestra:Genere un número aleatorio con una longitud de longitud aleatoria en Objective-C

int number = arc4random() % 1000000; 
outputLabel.text = [NSString stringWithFormat:@"The Number is %d", number]; 

Gracias por su ayuda y lo siento por mi mala Inglés!

Actualización: De acuerdo, acabo de ver que no obtengo solo números de 5 dígitos, pero la mayoría de las veces. ¿Hay alguna manera de obtener números o números más bajos con menos dígitos?

+0

Dado que la mayoría de los números de la gama son 5 dígitos, que, naturalmente, obtener un número de 5 dígitos más del tiempo eligiendo uno uniformemente al azar. Si desea una probabilidad igual de devolver un número con cada longitud, genere un número aleatorio en cada rango 0-9, 10-99, etc. y luego elija uno aleatorio para regresar. – Imran

+0

¡Gracias que ayudó! – Flocked

Respuesta

14

Si desea obtener un número entero aleatorio en el rango x-y, puede hacer que al int randomNumber = (arc4random() % y) + x;

+0

Hm, Tampoco funciona. Cuando configuro (arc4random()% 100000) + 1; Siempre obtengo un número con 5 dígitos. Cuando lo veo bien, solo agregue 1 al número "aleatorio" – Flocked

+0

¿Qué plataforma está usando? De acuerdo con http://iphonedevelopment.blogspot.com/2008/10/random-thoughts-rand-vs-arc4random.html, esto será tiene un rango de 0 a 0x100000000. Además, los números * ARE * son aleatorios, por lo que puede estar golpeando los números con 5 dígitos por pura casualidad. – Mike

+0

Lo uso con el iPhone OS 3.2.1 - No es pura casualidad , porque siempre obtengo 5 dígitos con 100000 y 4 dígitos con 10000, 3 con 1000 y así sucesivamente ... Los números de 5 dígitos son aleatorios, pero no la longitud. – Flocked

0

Creo que el valor predeterminado del tamaño del número devuelto por arc4random() es de 6 dígitos. intente poner 3,4,5 como argumentos como arc4random (4); y vea los resultados.

+0

No funciona. Él dice: "Demasiados argumentos para funcionar'arc4random' – Flocked

Cuestiones relacionadas