Entradas con tag ‘aleatorio’
Publicado por evelio hace 1138 dias, en: Desarrollo, PHP, Web.
En el capítulo anterior, el blogoamigo Shakaran aconsejó (Gracias!) usar mt_rand(); en lugar de rand();, función que no conocía y al parecer su uso al generar números aleatorios es más recomendable, lo cual fue cierto hasta la nueva implementación de rand();, la cual es más rápida que la mismísima mt_rand();, pero como las palabras se las lleva el viento y teniendo un área de Pruebas (a.k.a. Ejemplos) acá están las evidencias:
Código
<?php //Función a llamar varias veces function generarAleatorios($veces=100000) { echo "<h2 style=\"margin-top:20px;\">Se generaron {$veces} (x 2) números aleatorios</h2>"; $tiempoInicial = microtime(true); $i = 0; while($i < $veces) { rand(); $i++; } $tiempoFinal = microtime(true); $tiempoTotal = $tiempoFinal - $tiempoInicial; echo "Fueron <strong>{$tiempoTotal}</strong> segundos usando <strong>rand();</strong><br/>"; $tiempoInicial = microtime(true); $i = 0; while($i < $veces) { mt_rand(); $i++; } $tiempoFinal = microtime(true); $tiempoTotalMt = $tiempoFinal - $tiempoInicial; echo "Fueron <strong>{$tiempoTotalMt}</strong> segundos usando <strong>mt_rand();</strong><br/><br/>"; if($tiempoTotal < $tiempoTotalMt) { $diferencia = $tiempoTotalMt - $tiempoTotal; echo "<strong style=\"color:green;\">rand();</strong> fue más rápido por <strong>{$diferencia}</strong> segundos.<br />"; } else if($tiempoTotal > $tiempoTotalMt) { $direrencia = $tiempoTotal - $tiempoTotalMt; echo "<strong style=\"color:red;\">mt_rand();</strong> fue más rápido por <strong>{$diferencia}</strong> segundos.<br />"; } else { echo "<strong>rand();</strong> y <strong>mt_rand();</strong>, tomaron exactamente el mismo tiempo <strong>{$tiempoTotal}</strong> segundos, increíble!!.<br />"; } } //Todo listo!! //Primero con nuestros 3 números para los colores a ver como van con tan poquitos generarAleatorios(3); //Otros números más redondos generarAleatorios(10000); generarAleatorios(1000000); ?>
Ejemplo
Puedes ver el código funcionando aquí, así que ahora puedes usar rand(); sin perder anhelados micro-segundos
Referencias
Tags: aleatorio, PHP, prueba, rendimiento
Publicado por evelio hace 1139 dias, en: Desarrollo, PHP, Web.
De las cosas que me encantan del tema actual de este blog, es que en cada impresión de página el fondo cambia de color aleatoriamente, el código es muy sencillo y algo sucio:
Código
Hay varias formas de hacerlo, pero te mostraré 3:
-
Color en formato HTML
<?php //Obtenemos los canales rojo, verde y azul aleatoriamente $r = rand(0,255); $g = rand(0,255); $b = rand(0,255); //Los convertimos a hexadecimal $rh = dechex($r); $gh = dechex($g); $bh = dechex($b); //Generamos el color $color=($r>15 ? $rh : '0'.$rh ).($g>15 ? $gh : '0'.$gh ).($b>15 ? $bh : '0'.$bh ); /* Lo agregamos al documento en un elemento style también podrías agregarlo mediante la propiedad style del elemento body */ echo '<style>body{ background-color:#'.$color.' !important; }</style>'; /* Como notarás se hacen comprobaciones para que en caso de que algún canal generado sea menor igual a <strong>F</strong> (15 en decimal) se le agregue un <strong>0</strong> (cero) a la izquierda para que el color quede bien formado y sea válido. */ ?>
-
Color usando rgb de CSS
<?php //Obtenemos los canales rojo, verde y azul aleatoriamente $r = rand(0,255); $g = rand(0,255); $b = rand(0,255); /* Podríamos saltarnos las 3 sentencias anteriores y colocarlo directamente, pero lo hago por legibilidad Lo agregamos al documento en un elemento style también podrías agregarlo mediante la propiedad style del elemento body */ echo '<style>body{ background-color:rgb('.$r.', '.$g.', '.$b.') !important; }</style>'; ?>
-
Color usando porcentajes y rgb de CSS
<?php //Obtenemos los porcentajes para los canales rojo, verde y azul aleatoriamente $r = rand(0,100); $g = rand(0,100); $b = rand(0,100); /* Podríamos saltarnos las 3 sentencias anteriores y colocarlo directamente, pero lo hago por legibilidad Lo agregamos al documento en un elemento style también podrías agregarlo mediante la propiedad style del elemento body */ echo '<style>body{ background-color:rgb('.$r.'%, '.$g.'%, '.$b.'%) !important; }</style>'; ?>
Ejemplo
Aprovecho esta entrada tan sencilla para inaugurar un nueva sección llamada Ejemplos, puedes ver el ejemplo de esta entrada aquí.
