Foros del Web » Programando para Internet » PHP »

Argumentación Pseudoaleatoria tipo Rand

Estas en el tema de Argumentación Pseudoaleatoria tipo Rand en el foro de PHP en Foros del Web. La verdad que no se si es titulo del tema creará mucha confusión pero intentaré explicarme lo mejor posible por aqui. Intento crear una argumentación ...
  #1 (permalink)  
Antiguo 27/09/2013, 08:10
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 51
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Argumentación Pseudoaleatoria tipo Rand

La verdad que no se si es titulo del tema creará mucha confusión pero intentaré explicarme lo mejor posible por aqui.

Intento crear una argumentación aleatoria que me genere automaticamente resultados diferentes.

Ejemplo básico

$variable =rand(1,3);
echo "$variable";

Esto haría que se imprimiera en pantalla un número aleatorio del 1 al 3.

Mi idea es un poco más compleja.
En vez de que me imprima un nº aleatorio, quiero que saque una variable aleatoria.
Pero no se si es con el tipo rand. (min &max)

Os muestro el código según mi idea.

$img1 ="url_de_una_imagen1";
$img2 ="url_de_una_imagen2";
$img3 ="url_de_una_imagen3";

$var1 =rand(1,3); //En vez de referenciar que me seleccione del 1 al 3 quiero que me referencie $img1 ó $img2 ó $img3

echo "$var1";
  #2 (permalink)  
Antiguo 27/09/2013, 08:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Argumentación Pseudoaleatoria tipo Rand

simplemente usa un array en vez de variables consecutivas y usa el resultado aleatorio como índice
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 27/09/2013, 08:19
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Ok, puedes usar la función mt_random() en vez de rand() porque un algoritmo mejorado y nunca se repetirá la combinación.
En cuanto a lo que propones depende mucho para qué lo vayas a hacer.
Danos más info plz.

Saludos
  #4 (permalink)  
Antiguo 27/09/2013, 08:19
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Puedes guardar loa datoa en un array y utilizar la funcion array_rand
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #5 (permalink)  
Antiguo 27/09/2013, 10:02
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 51
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Argumentación Pseudoaleatoria tipo Rand

La idea es crear una especie de "tragaperras" pero de 3 valores aleatorios.
y si coincide los 3 te diga que has ganado y si no coinciden te diga que has perdido
pero los valores en vez de ser numeros me gustaria que fueran unas imagnes. y he aqui el atascamiento.
Despues de esto ya encontraré la manera de hacer mas combinaciones. Pero como es para aprender, prefiero hacerlo paso a paso.

Os paso el código por completo y así se entenderá mucho mejor el concepto.

Cita:
<html>
<head>
<title> Alea </title>
<style type="text/css">
<!--
.Estilo1 {color: #FFCC33}
-->
</style>
</head>
<body bgcolor="#FFCC33">
<div align="center">
<table border="9">

<img src="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/LOGO.png">
<hr>

<br><br>

<?php


$num1 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/1.png";
$num2 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/2.png";
$num3 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/3.png";
$num4 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/4.png";
$num5 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/5.png";
$num6 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/6.png";
$num7 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/7.png";
$num8 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/8.png";
$num9 ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/9.png";

$var1 =rand(1,3);
$var2 =rand(1,3);
$var3 =rand(1,3);
$GameWin ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/GameWin_1.png";
$GameOver ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/GameOver_1.png";



echo "<tr>";
echo "<td> - $var1 - </td>";
echo "<td> - $var2 - </td>";
echo "<td> - $var3 - </td>";
echo "</tr>";

if (($var1==$var2) && ($var2==$var3))
{
echo '<img src="'.$GameWin.'">';
}
else
{
echo '<img src="'.$GameOver.'">';
}

?>
</table>
</body>
</html>

gracias por todo.
Atentamente
PA
  #6 (permalink)  
Antiguo 27/09/2013, 10:24
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Argumentación Pseudoaleatoria tipo Rand

puedes hacer algo asi
Código PHP:
Ver original
  1. for($i=0; $i<8; $i++){
  2. $arrayimg[$i]="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/".$i+1.".png";
  3. }
  4. $var1= array_rand($arrayimg,1);
  5. $var2= array_rand($arrayimg,1);
  6. $var3= array_rand($arrayimg,1);
No probe el codigo pero deberia funcionar
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #7 (permalink)  
Antiguo 27/09/2013, 10:39
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 51
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Gracias SkAr88. Esto tiene mejor pinta.

Pero me lanza un error en la línea 24
Cita:
Parse error: syntax error, unexpected '".png"' (T_CONSTANT_ENCAPSED_STRING) in C:\xampp\htdocs\Laboratorio\3CoincidenciasAleatori as\index.php on line 24
creo que es por la extension .png (Que está comprobada que es dicha extensión) pero no se si deberia de ir en otro sitio o no.

Muchas gracias por todo

Sin este foro que seria de los que recien empiezan en este mundo de la programación :)

saludos.
  #8 (permalink)  
Antiguo 27/09/2013, 10:59
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Prueba con esto
for($i=1; $i<9; $i++){
$arrayimg[]="ruta/de/la/imagen".$i.".png";
}
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #9 (permalink)  
Antiguo 27/09/2013, 11:09
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 51
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Ya no sale error, aunque tuve que añadir un = al array_rand pero por lo demas no marca error.

la única pega es que sigen saliendo números del 1 al 9 en vez de las imagenes.

pero la verdad que me ha venido genial este codigo. He aprendido cosillas muy curiosas. :)

un saludo

os paso el código para que podais verlo entero con el arreglo a falta de sustituir las imagenes.

Cita:
<?php


for($i=1; $i<9; $i++){
$arrayimg[]="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/".$i.".png";
}

$var1 =array_rand($arrayimg,1);
$var2 =array_rand($arrayimg,1);
$var3 =array_rand($arrayimg,1);
$GameWin ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/GameWin_1.png";
$GameOver ="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/GameOver_1.png";



echo "<tr>";
echo "<td> - $var1 - </td>";
echo "<td> - $var2 - </td>";
echo "<td> - $var3 - </td>";
echo "</tr>";

if (($var1==$var2) && ($var2==$var3))
{
echo '<img src="'.$GameWin.'">';
}
else
{
echo '<img src="'.$GameOver.'">';
}

?>
</table>
  #10 (permalink)  
Antiguo 27/09/2013, 11:18
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Código PHP:
Ver original
  1. for(...){
  2. ...
  3. }
  4. echo $arrayimg[array_rand($arrayimg)];
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Última edición por xSkArx; 27/09/2013 a las 11:28
  #11 (permalink)  
Antiguo 27/09/2013, 12:00
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 51
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Me sabe un poco mal volver a notificar que sige dando "fallo" no de código pero solo me direcciona la url en si, aleatoria, pero url, no imagen.

hago una captura de pantalla para que se vea mejor.

url imagen de la captura.

http://subefotos.com/ver/?baf78f194ef730febca36fa6e6743862o.jpg

un saludo

gracias
  #12 (permalink)  
Antiguo 27/09/2013, 12:09
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Pues ponlo en el el atributo src y hazle un echo.
Código PHP:
Ver original
  1. echo '<img height="300" width="400" src="$array[array_rand($array)]">';
  #13 (permalink)  
Antiguo 28/09/2013, 03:32
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 51
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Ahora si!! Solo falta que la imagen salga entera. y no cortada (Como si hubiera un fallo en el nombre o en la ruta)

y puesto que lo que pretendo es aprender php.

Alguien podría explicar brevemente que significa exactamente esto? Aunque yo intentaré probar a decir lo que creo que es para ver si voy bien encaminado, aunque puedo bien meter la pata.

for($i=1; $i<9; $i++){
$arrayimg[]="http://localhost/Laboratorio/3CoincidenciasAleatorias/img/Casillas/".$i.".png";


for es un bucle que lo que hace en sí es reunir unas cuantas funciones y poder hacerlas repetitivas en este caso se ha creado una variable llamada $i que es igual a 1, si $i es menor a 9 (y creo que aqui deberiamos añadir un = no?) pues que $i se valla sumando (1) hasta que no cumpla se cumpla su instruccion y no pueda pasar de 9.

$arrayimg[]="rutaimg".$i.".png"; aunque no conozco mucho esta instrucción imagino que funciona de igual manera que =rand pero mas que para numero es para caracteres o imagenes ¿? aqui ya me pierdo un poco.

un saludo y gracias a todo el foro por vuestra ayuda siempre
  #14 (permalink)  
Antiguo 28/09/2013, 03:58
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Hola.
Básicamente lo que hace es crear un array: arrayimg y meter valores de rutas de archivos aleatorios respecto al número en cadena $i: 1,2,3,4... Seguramente no se encuentren esos archivos, no se muy bien que te propones ahora.
Saludos
  #15 (permalink)  
Antiguo 28/09/2013, 05:26
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Lo que pasa es que como los nombres de las imagenes eran numeros, es la forma mas rapida para meter la ruta de las imagenes en el array
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #16 (permalink)  
Antiguo 28/09/2013, 05:40
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Probablemente lo sea, pero es una falla de seguridad bastante generosa.
  #17 (permalink)  
Antiguo 28/09/2013, 06:02
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Cita:
Iniciado por PHPeros Ver Mensaje
Probablemente lo sea, pero es una falla de seguridad bastante generosa.
Por que lo dices?
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #18 (permalink)  
Antiguo 28/09/2013, 06:11
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Quizá exagero, pero no hay que acostumbrarse a crear directorios o archivos con patrones fáciles... Es de lógica
  #19 (permalink)  
Antiguo 30/09/2013, 04:17
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 51
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Argumentación Pseudoaleatoria tipo Rand

Alguien sabe porque derrepente mis "Pruebas" en php se ven en blanco? desde el localhost?

Lo he subido a mi hosting y se ve perfectamente, pero desde localhost se queda totalmetne en blanco.

alguien sabe el porq?

gracias.

Etiquetas: rand, tipo, variable
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 17:44.