PHP – Usando RAND() para crear una cadena aleatoria

La función RAND() en php nos devuelve un numero aleatorio al azar de 0 hasta el máximo posible (getrandmax() para saber cual es el mayor numero posible) entre sus usos puede ser crear un dado para juegos en donde deberíamos indicar que el mínimo es 1 y el máximo será 6

<?php
$numerodado = rand(1,6); //nos dará 1,2,3,4,5 o 6
echo $numerodado;
?>

otro uso es por ejemplo mostrar un banner de manera aleatorio o que rote

<?php
switch (rand(1,5))
    case 1: 
        $titleimage = "/images/banners13/1.gif"; 
        break; 
    case 2: 
        $titleimage = "/images/banners13/2.gif"; 
        break; 
    case 3: 
        $titleimage = "/images/banners13/3.gif"; 
        break; 
    case 4: 
        $titleimage = "/images/banners13/4.gif"; 
        break;    
    case 5: 
        $titleimage = "/images/banners13/5.gif"; 
        break;  
}
/*una manera más corta del SWITCH de arriba seria:
$titleimage = "/images/banners13/".rand(1,5).".gif";*/
?>

Aquí el código para Generar una cadena de forma aleatoria, por ejemplo un password autogenerado.

<?php
$caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; //posibles caracteres a usar
$numerodeletras=10; //numero de letras para generar el texto
$cadena = ""; //variable para almacenar la cadena generada
for($i=0;$i<$numerodeletras;$i++)
{
    $cadena .= substr($caracteres,rand(0,strlen($caracteres)),1); /*Extraemos 1 carácter de los caracteres 
entre el rango 0 a Numero de letras que tiene la cadena */
}
echo $cadena;
?>

20 Comentarios para “PHP – Usando RAND() para crear una cadena aleatoria”

  1. Muy bien pensado. Cuando lei el titulo pensaba en que lo harias mediante los valores decimales de cada letra en la tabla ASCII, pero como tu lo has hecho es mucho mas facil.

  2. una duda cual es el codigo para almacenar la variable?

  3. En el autogenerado de contraseña final…creo que lo habéis hecho más difícil de lo que podría ser, os podríais haber ahorrado el bucle por ejemplo. Mi código es este:

    $caracteres = «ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890»;
    $desordenada = str_shuffle($caracteres);
    $password = substr($desordenada, 1, 10);
    echo $password;
    ?>

    Con la funcion str_shuffle() desordenamos la cadena, por lo que siempre pillamos del puesto 1 hasta el 10, pero al desordenarse cada vez, nunca saldrá la misma contraseña. Lo he probado y funciona muy bien, y creo que es bastante más fácil, aunque si es para recordar como usar bucles y todo eso esta bien.

    Os habla un novatillo jeje, espero haber ayudado.

    1. Muy buena idea David. En lo personal las dos son buenas pero esta parece gastar menos recursos.

    2. Después de tanto estar buscando, me salva tu código. Muchas gracias.

  4. No se si te refieres a:
    $var = rand(1,10);

    En este caso $var tendrá un valor aleatorio entre 1 y 10, podría ser 3, 5, 7, o 1.. será aleatorio cada vez que se ejecute el archivo.php

  5. Excelente código. Pocas veces dejo un comentario y solo lo hago cuando funciona la solución encontrada y esta acorde con el objetivo que se desea alcanzar.

  6. buen aporte chicos, tengo una gran duda como puedo crear variables (nuevas) dentro de un rutina en php, como por ejemplo, en cierta linea de mi codigo que se genere una variable llamada $materia1, $materia2, $materia3 o cualquier otro numero dependera eso de unos datos que saque deuna base de datos en mysql. saludosy gracias.

    1. lo que pides si es posible, pero para eso existe los arrays, $arreglo[1], $arreglo[2], etc, ademas que existen funciones que te pueden ayudar como foreach, y un sin fin de posibilidades con arrays,

      en tal caso lo que pides si es posible y aqui te dejo el codigo de ejemplo:

      Contenido de string como variable

      «;

      echo $prueba1;

  7. Gracias Jhonnyf, no solo por tu aporte, si no resolverlo de manera que yo tenia idea y ademas por la manera mas viable de lo array. Me queda muy claro, muy agradecido.

  8. Otra pregunta, lo he visto en foreach donde explicas Jonnyf los arrays, que significa «=>»; gracias de antemano por tu respuesta.

    1. El foreach al usarlo con arrays, puedes recorrer los elementos o elementos y su índice, y la sintaxis es como la muestro, es decir: foreach ($array as $clave=>$elemento) El «=>» es parte de la sintaxis

  9. David tu codigo anda mejor

  10. muy ingeniosa la solucion te felicito, excelente post!!

  11. buenas como puedo hacer un formulario donde introduzca un codigo guardado en una base de datos y me lo verifique

  12. una pregunta como puedo hacer para que genere nombres aleatorios por ejemplo jun,maria,altagracias…

  13. como puedo hacer una rand con palabras predefinidas?

  14. Excelente amigo!

  15. Yo voy a dejar el código que he pensado para generar un número aleatorio entre 1 y 10.99 con dos decimales. Espero que os pueda servir
    <?php
    // $e guarda un número aleatorio entre 1 y 10 (parte entera)
    $e=rand(1,10);

    // $ce guarda el string del número aleatorio $e
    $ce= (string) $e;

    /* $d1 guarda un número aleatorio entre 0 y 9 (decimal 1)*/
    $d1=rand(0,9);

    //$cd1 guarda el string del número aleatorio $d1
    $cd1= (string) $d1;

    /* $d2 guarda un número aleatorio entre 0 y 9 (decimal 2)*/
    $d2=rand(0,9);

    //$cd2 guarda el string del número aleatorio $d2
    $cd2= (string) $d2;

    /*$cnum guarda la cadena del número decimal como string*/
    $cnum= $ce.".".$cd1.$cd2;

    /* $nota almacena el número decimal (float) de la cadena $cnum*/
    $nota= (float) $cnum;

    echo $nota."»;

    if ($nota<5){

    echo "Suspenso";
    }
    elseif ($nota<6){

    echo "Suficiente";
    }
    elseif ($nota<7)
    {
    echo "Bien";
    }
    elseif ($nota

  16. En realidad del código para generar un número aleatorio de dos decimales sería este, el anterior lo he incluido en un script para escribir la calificación de la nota aleatoria

    // $e guarda un número aleatorio entre 1 y 10 (parte entera)
    $e=rand(1,10);

    // $ce guarda el string del número aleatorio $e
    $ce= (string) $e;

    /* $d1 guarda un número aleatorio entre 0 y 9 (decimal 1)*/
    $d1=rand(0,9);

    //$cd1 guarda el string del número aleatorio $d1
    $cd1= (string) $d1;

    /* $d2 guarda un número aleatorio entre 0 y 9 (decimal 2)*/
    $d2=rand(0,9);

    //$cd2 guarda el string del número aleatorio $d2
    $cd2= (string) $d2;

    /*$cnum guarda la cadena del número decimal como string*/
    $cnum= $ce.».».$cd1.$cd2;

    /* $nota almacena el número decimal (float) de la cadena $cnum*/
    $nota= (float) $cnum;

    echo $nota;

Deja una respuesta

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