Ver Mensaje Individual
  #12 (permalink)  
Antiguo 24/11/2013, 04:50
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Número aleatorio pero evitando uno en particular

Cita:
Iniciado por Alexis88 Ver Mensaje
Como bien te han dicho, no hay forma de que coloques una excepción, al menos no dentro de una función primitiva de PHP, sin embargo, puedes emular ese accionar. Un pequeño ejemplo:

Código PHP:
Ver original
  1. <?php
  2. function loteria ($numero) {
  3.     $aleatorio = mt_rand(1, 49);
  4.     if (!in_array($aleatorio, $numero)) $numero[] = $aleatorio;
  5.     return count($numero) < 5 ? loteria($numero) : $numero;
  6. }
  7. echo "Numero de loteria: ";
  8. foreach (loteria(array()) as $valor) echo $valor . "\t";
  9. ?>
Saludos
Si ya no era buena solución "reintentar" rand hasta que salga un número que no hubiera salido previamente, esta solución añade un problema aún mayor: reintenta recursivamente.

Supongamos que el bombo tiene 1000 numeros.Cuando se hayan sacado 999 números (sólo queda 1), esta solución intentará de media 1000 llamadas recursivas para intentar sacar el único número que queda del bombo.No sólo es ineficiente..algunas extensiones típicas (xdebug), matarán la petición (el tamaño de la pila de llamadas es 100 por defecto).

Un programador, cuando ve que para sacar un número que está determinado unívocamente (es el único que queda en el bombo) está haciendo 1000 llamadas a función, debería replantearse su solución.
Aparte, como ya he dicho, en php esto se resuelve en 2 líneas con funciones estándar.