Foros del Web » Programando para Internet » PHP »

Este codigo solo genera como numero aleatorio "2" ¿donde está el fallo?

Estas en el tema de Este codigo solo genera como numero aleatorio "2" ¿donde está el fallo? en el foro de PHP en Foros del Web. Haber si podeis hecharme una mano con este codigo. Solo da como resultado el numero 2, cuando deberia de dar 1, x, 2 al azar. ...
  #1 (permalink)  
Antiguo 05/04/2010, 04:54
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Este codigo solo genera como numero aleatorio "2" ¿donde está el fallo?

Haber si podeis hecharme una mano con este codigo. Solo da como resultado el numero 2, cuando deberia de dar 1, x, 2 al azar.

Cita:
<?php
/* Variables globales de configuración */

$esperamin = 10000; // Tiempo de espera minimo antes de realizar un numero aleatorio
$esperamax = 1000000; // Tiempo de espera maximo antes de realizar un numero aleatorio

$uno = 1; // 1 vale 1
$dos = 2; // 2 vale x
$tres = 3; //3 vale 2

/* La función numale genera un valor aleatorio */
function numale()
{
$espera = rand($GLOBALS["esperamin"],$GLOBALS["esperamax"]);
usleep($espera);
$numero = rand(1,3);
if ($numero = $GLOBALS["uno"]) {$numerofinal = "1";}
if ($numero = $GLOBALS["dos"]) {$numerofinal = "x";}
if ($numero = $GLOBALS["tres"]) {$numerofinal = "2";}
return $numerofinal;
}

$ejemplo = numale();
echo "$ejemplo<br>";
$ejemplo = numale();
echo "$ejemplo<br>";
$ejemplo = numale();
echo "$ejemplo<br>";
$ejemplo = numale();
echo "$ejemplo<br>";
$ejemplo = numale();
echo "$ejemplo<br>";
?>
  #2 (permalink)  
Antiguo 05/04/2010, 06:39
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Este codigo solo genera como numero aleatorio "2" ¿donde está el fallo?

No se que estas pretendiendo hacer, pero el tema de variables globales, si no me equivoco, esta en desuso hace rato ya...
Usa variables de sesion, o algo asi...

No se que estara pasando con ese codigo, pero porque no imprimis un "hola" o algo por el estilo dentro de los condicionales de la funcion a ver que esta pasando?
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 05/04/2010, 06:58
Avatar de cemansilla  
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 214
Antigüedad: 16 años, 7 meses
Puntos: 6
Respuesta: Este codigo solo genera como numero aleatorio "2" ¿donde está el fallo?

Cita:
Iniciado por Vj_DarkHunter Ver Mensaje
Haber si podeis hecharme una mano con este codigo. Solo da como resultado el numero 2, cuando deberia de dar 1, x, 2 al azar.
El problema está en las validaciones, estás asignando en lugar de comparar. Deberías cambiar esto:

Código PHP:
if ($numero $GLOBALS["uno"]) {$numerofinal "1";}
if (
$numero $GLOBALS["dos"]) {$numerofinal "x";}
if (
$numero $GLOBALS["tres"]) {$numerofinal "2";} 
Por eso:

Código PHP:
if ($numero == $GLOBALS["uno"]) {$numerofinal "1";}
if (
$numero == $GLOBALS["dos"]) {$numerofinal "x";}
if (
$numero == $GLOBALS["tres"]) {$numerofinal "2";} 
Saludos!
__________________
CÉSAR MANSILLA
Web & Mobile Developer - Analista - Creativo - Curioso
http://cesarmansilla.com/
http://cesarmansilla.com/blog/
  #4 (permalink)  
Antiguo 05/04/2010, 08:41
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Este codigo solo genera como numero aleatorio "2" ¿donde está el fallo?

correcto cemansilla, ahora funciona perfectamente. Muchas gracias, llevaba tanto tiempo sin tocar php que no recordaba que para comparar hay que usar == en vez de =.
  #5 (permalink)  
Antiguo 05/04/2010, 09:01
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: Este codigo solo genera como numero aleatorio "2" ¿donde está el fallo?

podrías reducir tu función de esta manera:
Código PHP:
function make_seed(){
  list(
$usec$sec) = explode(' 'microtime());
  return (float) 
$sec + ((float) $usec 100000);
}

function 
numale(){
 
$numeros = array('1','x','2');
 
srand(make_seed()); 
 
$num rand(0,2);
 return 
$numeros[$num];

__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **

Etiquetas: fallo, numero, aleatoria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:45.