Foros del Web » Programando para Internet » PHP »

Otra manera para elegir una linea aleatoria ?

Estas en el tema de Otra manera para elegir una linea aleatoria ? en el foro de PHP en Foros del Web. Estuve pensando como conseguir que de un archivo de texto con un monton de palabras, me eligiera una palabra aleatoriamente, y esto fue lo que ...
  #1 (permalink)  
Antiguo 19/06/2010, 11:31
Avatar de uriurifrank  
Fecha de Ingreso: abril-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 1
Otra manera para elegir una linea aleatoria ?

Estuve pensando como conseguir que de un archivo de texto con un monton de palabras, me eligiera una palabra aleatoriamente, y esto fue lo que se me ocurrio:
Código PHP:
<?
//Lectura de archivo.
$miarchivo "diccionario.txt";
$abrir_archivo fopen ($miarchivo,"r") or die ("No se puede abrir el archivo");
$cont 0;
while (!
feof($abrir_archivo))
{
 
$linea fgets($abrir_archivo,1024);
 
//cuenta las lineas
 
$cont++;
}
fclose($abrir_archivo);

//elige el numero de linea
$elegido rand(0,$cont);

//busca la linea elegida
$abrir_archivo fopen ($miarchivo,"r") or die ("No se puede abrir el archivo");
$cont2 0;
while (
$cont2 <= $elegido 1){
$palabraelegida fgets($abrir_archivo,1024);
$cont++;
}
// $palabraelegida";
fclose($abrir_archivo);
echo 
"El archivo abierto tiene $cont lineas y ";
echo 
"la palabra elegida es $palabraelegida";
?>
Pero el problema que tengo es que el archivo con todas las palabras tiene casi 1 millon de lineas xD y cada vez que ejecuto este código consume un montón de CPU al ordenador O_o Existe alguna manera más de conseguir este mismo efecto sin que consuma tanto ?
  #2 (permalink)  
Antiguo 19/06/2010, 11:41
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Otra manera para elegir una linea aleatoria ?

Código PHP:
$text file_get_contents('ruta_al_archivo.txt');
$palabras explode(' '$text);
$rand mt_rand(0count($palabras)-1);
echo 
$palabras[$rand]; 
Se me ocurre eso, no lo he probado, pero inténtalo.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 19/06/2010, 12:06
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Otra manera para elegir una linea aleatoria ?

Algo asi:

Código PHP:

$cadena
=file_get_contents("archivo.txt");

$palabras explode(" ",$cadena);

//se mezcla el array
shuffle($palabras);

//se recupera el primer elemento del array
//que cada vez sera diferente
echo $palabras[0]; 

Etiquetas: aleatoria, elegir, linea
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 15:43.