Libro de Visitas Gratis
Inicio | Directorio de Páginas | Diseño Gráfico | Gadgets | Posicionamiento | Webmasters| Buscador de Artículos | Glosarios

Comandos para números aleatorios (RAND, MT_RAND)

Añade Tu Web Al Directorio de NocionDigital.com
MT_RAND y RAND

int mt_rand(minimo, máximo);

Devuelve un número aleatorio entre el mínimo y máximo que nosotros ponemos.

La senténcia mt_rand es mejor por dos motivos: es bastante mas rápida que rand() y tiene un mejor algoritmo, digamos que los números seudo-aleatorios que genera son "más aleatorios" que los de rand().

Aparte de estas dos diferencias, tanto rand() / srand() como mt_rand()/mt_srand() funcionan igual, o sea que lo que ahora explicaré para rand() / srand() funciona exactamentre igual en mt_rand() / mt_srand():

Los números que se generan no son realmente aleatorios. Para entendernos, digamos que hay una lista *enorme* de números desordenados, siempre los mismos números. Cuando solicitamos un número a rand() lo toma de esa lista, y cuando le solicitamos otro, toma el siguiente de la lista. Con srand(), lo que hacemos es posicionar el puntero en un lugar de terminado, haced esta prueba:


<?php
srand(1000);
echo rand(0, 100), `-`, rand(0, 100), `-`, rand(0, 100), ``<BR>``;
srand(1000);echo rand(0, 100), `-`, rand(0, 100), `-`, rand(0, 100), ``<BR>``;srand(1000);
echo rand(0, 100), `-`, rand(0, 100), `-`, rand(0, 100), ``<BR>``;
?>

Resultado
98-34-54 98-34-54 98-34-54
Siempre que ejecuteis este código apareceran los mismos tres números, 98-34-54, puesto que siempre inicializamos srand() con el mismo número, 1000. Esto es muy útil si quereis generar una lista de números aleatorios, pero quereis que sean siempre los mismos números, por ejemplo, habeis diseñado un juego de ordenador en el que aleatoriamente se genera un laberinto, pero claro, debe generarse siempre el mismo laberinto, para que los jugadores puedan aprender donde están a lo largo de varias partidas. Entonces inicializamos cada vez srand() con el mismo número.

Ahora probad esto:

<?php
srand((double)microtime()*1000000);
echo rand(0, 100), `-`, rand(0, 100), `-`, rand(0, 100), `<BR>`;
srand((double)microtime()*1000000); echo rand(0, 100), `-`, rand(0, 100), `-`, rand(0, 100), `<BR>`;
srand((double)microtime()*1000000); echo rand(0, 100), `-`, rand(0, 100), `-`, rand(0, 100), `<BR>`;
?>


Resultado:
10-32-72 43-6-87 65-98-7
Podeis ver que ahora aparece un resultado distinto cada vez, esto es así porque inicializamos srand() con la función microtime(), que nos devuelve un número tomándolo del reloj del sistema, y por lo tanto es un número distintio cada vez.
 
Hits
DOCUMENTOS RELACIONDOS
1088
Manejo de múltiples archivos.
6328
Sacar el subrayado de los links.
863
Variables variables.
1322
Listar una Base de Datos.
14358
Carga del contenido de una página HTML con AJAX.
1369
Usando NokTemplate. Facil, rápida y en castellano.
3477
Ordenar una matriz (QuickSort).
5452
Mostrar el listado de una tabla y el contenido de las celdas en una sola página sin recargar.
3654
Saber el navegador del usuario.
1213
Conectarse a una BBDD de Visual FoxPro..
2370
Convertir a minúsculas / mayúsculas.
1128
Botón de link redimensionable.
1257
Titulo cambiante cada pocos segundos.
1507
Descodificar un URLEncode.
3070
Enlaces dentro de la misma página.
996
Información "animada" en la barra de estado.
1039
Barajas y cartas.
5232
Thumbnails - ampliar y reducir la imágen.
1633
Redimensionar imágen sin perder las proporciones de anchura y altura.
1142
Mostrar un número con una determinada cantidad de decimales.


www.nociondigital.com - Todo para un mundo digital. Páginas Webs, Buscadores y Webmasters....