Foros del Web » Programando para Internet » PHP »

Números aleatorios.

Estas en el tema de Números aleatorios. en el foro de PHP en Foros del Web. Muy buenas a todos. Es la primera vez que posteo pero por lo que veo está todo muy interesante por acá.. espero pasarmelo bien y ...
  #1 (permalink)  
Antiguo 28/05/2009, 11:33
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Números aleatorios.

Muy buenas a todos. Es la primera vez que posteo pero por lo que veo está todo muy interesante por acá.. espero pasarmelo bien y aprender, y más que nada si puedo echar un cable mejor que mejor :)

A lo que iba.
Estoy aprendiendo PHP, con un manual muy bueno que vienen ejemplos y ejercicios, la cosa es que me quedé medio estancado en este ejercicio:

Cita:
En este ejercicio –ejercicio24.php– trataremos de crear una tabla como la anterior, esta vez de una sola fila y seis columnas, conteniendo cada celda un número aleatorio comprendido entre 1 y 49 en la que habremos de evitar la posibilidad de que un número se repita dos veces (podría ser una forma de rellenar la primitiva).

Para ello te sugerimos que guardes en un array los valores de los números aleatorios que se van generando y que, antes de guardar cada uno de ellos, se ejecute un bucle que compruebe si entre los registrados ya existe un valor igual al obtenido. Si no existiera ese valor se guardaría el dato, en caso contrario se repetiría la extracción.
Yo tengo algo asi, la cosa es que hice la tabla primer, y lo demás lo hice aparte para que cuando salga bien implementarlo en la tabla que sería lo más fácil.

Algo así tengo:

Código PHP:
<?php

mt_srand
((double)microtime()*1000000);
mt_rand(1,6);


echo 
"<table align='center' border='2px' width='20%'>";

    for(
$col=0$col<6$col++){
    
        echo 
"<tr><td align='center'>";
        echo 
"por hacer";
        echo 
"</td></tr>";
        
    }

    while(
$valor<6){
    
        
$valor++;
        
$miarray[$valor]=mt_rand(1,6);
        echo 
"Posición $valor : "
        echo 
$miarray[$valor];
        echo 
"<br>";
        
    }

    echo 
"<p>";
        
    while(
$v_dos<6){
    
        
$v_dos++;
        
$array_dos[$v_dos]=mt_rand(1,6);
        echo 
"Posición $v_dos : "
        echo 
$array_dos[$v_dos];
        echo 
"<br>";
        
    }
    
    
?>
La cosa es que me guarda el número aleatorio en el array, el problema tengo que no se como comprobar que no se repite en todo el array, y si se repite no se que como podría hacer para poner que vuelva a elegir otro.. no quiero ni mucho menos que me lo den echo simplemente ver por donde me puedo orientar y todo eso que ando re perdido :)

un saludo y muchísimas gracias desde ya :D
  #2 (permalink)  
Antiguo 28/05/2009, 11:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Números aleatorios.

hola, y bienvenido...

la mejor manera de hacer lo que necesitas es un bucle, cierto...


y debes usar un bucle lógico que cumpla la condición:

"has que asigne el numero, si ya existe obtenemos un nuevo numero"

Código PHP:
$numero = array();

for (
$i 0$i 10; ++$i)
{
 do 
// has un
 
{
  
$nuevo rand(110); // nuevo numero
 
} while(in_array($nuevo$numero)); // si ya esta en el array?

 
$numero []= $nuevo// asignado!
}

var_dump($numero); 
espero te ayude, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/05/2009, 12:41
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Respuesta: Números aleatorios.

Perfecto, ahora lo probaré, la cosa es que por ejemplo el DO, el IN_ARRAY o el VAR_DUMP aun no lo he visto y no se muy bien que hace jaja más que nada es para practicar con el FOR que es lo que estoy viendo en este momento, pero aun así me viene muy bien, muchas gracias :)
  #4 (permalink)  
Antiguo 28/05/2009, 13:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Números aleatorios.

claro, no olvides consultar el manual de PHP si desconoces alguna función

http://www.php.net/manual/es/control...s.do.while.php

http://php.net/in_array
http://php.net/var_dump


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 28/05/2009, 15:20
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Respuesta: Números aleatorios.

A vale eso no sabía jajaja Gracias :) lo miraré !

PD: Siempre salen en inglés los manuales de php?? Porque no me entero mucho =(

Última edición por Jask; 28/05/2009 a las 15:35
  #6 (permalink)  
Antiguo 28/05/2009, 18:01
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Números aleatorios.

Cuando estas viendo informacion sobre alguna funcion en el manual de PHP, hay un <select> arriba, en el cual puedes elegir el idioma que desees.
  #7 (permalink)  
Antiguo 28/05/2009, 18:05
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Respuesta: Números aleatorios.

Elijo español.. y sale en inglés.. que gracioso xD !! jjajaja
  #8 (permalink)  
Antiguo 28/05/2009, 18:14
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Números aleatorios.

si aveces pasa eso, puedes intentar colocando en google la funcion seguida de php.net o sola tambien sale

empty() php.net

Por lo general sale en español
  #9 (permalink)  
Antiguo 01/06/2009, 02:40
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Respuesta: Números aleatorios.

Perdonar por mi ignorancia pero sigo sin saber como buscar en Google lo de PHP ya que por ejemplo pongo Do php.net y no me sala nada que tenga que ver con eso en php.net :S !! alguna sugerencia ??

Gracias.

EDIT


Lo he resuelto jajajj Saludos y gracias :) ( digo a lo de buscar en php.net jajaja, a lo otro, estoy estudiando el código que me pasó pateketrueke, muchísimas gracias a todos por la explicación y el tiempo empleado :D )

Última edición por Jask; 01/06/2009 a las 03:26 Razón: Resuelto
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 13:10.