Quiero generar números aleatorios entre 1 y 100 en Objective-C. Cada número aleatorio debe ser único y no es el mismo que previamente un número aleatorio generado.

  • Echa un vistazo a las muchas otras preguntas sobre este tema, por ejemplo, stackoverflow.com/questions/160890/…
  • uso arc4random() %(100);
  • Me encontré con esto, y yo pensé que debería compartir que se debe preferir arc4random_uniform(X) para arc4random() % X
  • gracias amigo.
InformationsquelleAutor Tirth | 2011-06-17

6 Comentarios

  1. 77

    Comprobar los vínculos



    • Objective-C: Obtener número aleatorio

      -(int)getRandomNumberBetween:(int)from and:(int)to {
      
          return (int)from + arc4random() % (to-from+1);
      }

      Cómo utilizar:

      1) Implementar el método anterior en su .m archivo

      2) Agregar la siguiente línea a su archivo .h archivo:

      -(int)getRandomNumberBetween:(int)from and:(int)to;

      3) Llamar al método como:

      int randomNumber = [self getRandomNumberBetween:9 and:99];
      //this gets you a random number between 9 and 99

    • Gracias. Su trabajo es impresionante.
  2. 6

    arc4random() %(100)-1 esto se trabajó para mí.

    • De man arc4random: arc4random_uniform() devolverá un distribuidos de manera uniforme número aleatorio menor que upper_bound. arc4random_uniform() se recomienda más que construcciones como `arc4random() % upper_bound» ya que evita el «modulo sesgo» cuando el límite superior no es una potencia de dos.
    • también, tenga en cuenta que el límite superior en u_int32_t arc4random_uniform(u_int32_t upper_bound) no es inclusivo, es decir, arc4random_uniform(1) siempre te dará ceros.
  3. 4

    Otra manera fácil de hacer esto es el uso de la arc4random_uniform() método:

    Llamar arc4random_uniform(N) devolver un número aleatorio de 0 a N-1. Para obtener un número de 1 a N, se puede utilizar:

    NSUInteger r = arc4random_uniform(N) + 1;

    donde N es el número máximo que usted está buscando. En Swift, usted puede hacer como:

    var randomIndex:UInt32 = arc4random_uniform(N) + 1

    por ejemplo, si usted desea conseguir un número aleatorio entre 1 y 100, solo tiene que llamar como:

    NSUInteger r = arc4random_uniform(100) + 1;

    o en swift:

    var randomIndex:UInt32 = arc4random_uniform(100)+1
  4. 2

    Este es el código que generan única de números aleatorios…

    -(void)UniqueRandom{
    
        int T[11];
        BOOL flag;
        for(int i=0;i<10;i++){
    
            int ranNo=  random()%100+1;
            flag=TRUE;
            int s=(sizeof T); 
    
            for(int x=0;x<s;x++){
    
                if(ranNo==T[x]){
                    i--;
                    flag= FALSE;
                    break;
                }
            }
    
            if(flag) T[i]=ranNo;
        }
    
        for(int j=0;j<100;j++)  NSLog(@"unique random %d",T[j]);
        }
    }

    Feliz codificación..

  5. 0

    De este método de generar la matriz de único número aleatorio en el intervalo de alta y baja gama.

    -(void)generateRandomUniqueNumberInRange :(int)rangeLow :(int)rangeHigh{
        NSMutableArray *unqArray=[[NSMutableArray alloc] init];
        int randNum = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
        int counter=0;
        while (counter<rangeHigh-rangeLow) {
            if (![unqArray containsObject:[NSNumber numberWithInt:randNum]]) {
                [unqArray addObject:[NSNumber numberWithInt:randNum]];
                counter++;
            }else{
                randNum = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
            }
    
        }
        NSLog(@"UNIQUE ARRAY %@",unqArray);
    
    }

Dejar respuesta

Please enter your comment!
Please enter your name here