Foros del Web » Programando para Internet » PHP »

Random() con posibilidad

Estas en el tema de Random() con posibilidad en el foro de PHP en Foros del Web. Buenas, tengo esto: $query = mysql_query("SELECT * FROM objetos WHERE cat=3 ORDER BY RAND() LIMIT 1"); Me gustaría hacer una probabilidad, es decir, que haia ...
  #1 (permalink)  
Antiguo 10/01/2012, 12:23
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 13 años, 5 meses
Puntos: 3
Random() con posibilidad

Buenas, tengo esto:
$query = mysql_query("SELECT * FROM objetos WHERE cat=3 ORDER BY RAND() LIMIT 1");


Me gustaría hacer una probabilidad, es decir, que haia un objeto que no salga casi nunca.

Los campos que tiene la tabla son id, cat, nombre, desc

No tengo ni idea de como se hace.

¿Alguna forma?


Es PHP
  #2 (permalink)  
Antiguo 10/01/2012, 12:27
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 11 meses
Puntos: 51
Respuesta: Random() con posibilidad

Si sabés que id ( o los ids ) querés que salga pocas veces, podés hacer un random antes de llamar a la instrucción SQL. Ejemplo:

Código PHP:
Ver original
  1. $id = 10;
  2.  
  3. $noid = (rand(1, 2) == 2?'AND id != $id':'');
  4.  
  5. $query = mysql_query("SELECT * FROM objetos WHERE cat=3 $noid ORDER BY RAND() LIMIT 1");
  #3 (permalink)  
Antiguo 10/01/2012, 12:32
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Random() con posibilidad

Buenas, como estas en el foro de PHP te ayudaré con código PHP :)
el método que utilicé hace un tiempo para algo parecido a lo que necesitas fue este


Código PHP:
<?php 
$posibilidades
= array('posibilidad 1' => 40'posibilidad 2' => 40'posibilidad 3' => 20); 
foreach (
$posibilidades $key => $value) { 
    for (
$i $value$i 0$i--) $new[] = $key

echo 
$new[rand(0,count($new) - 1)];
intenta entenderlo.. es básicamente un relleno de datos via porcentajes

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 10/01/2012, 12:33
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Random() con posibilidad

$id = 10;

$noid = (rand(1, 2) == 2?'AND id != $id':'');

No entendí mui bien esa parte. $id es el numero de id que hai?
  #5 (permalink)  
Antiguo 10/01/2012, 12:35
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Random() con posibilidad

Existe una formula de probabilidad para esos casos, deberias googlear esa formula. Todas las probabilidades son formulas matematicas que ya existen para determinados casos.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #6 (permalink)  
Antiguo 10/01/2012, 12:36
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 11 meses
Puntos: 51
Respuesta: Random() con posibilidad

Cita:
Iniciado por Kilin Ver Mensaje
$id = 10;

$noid = (rand(1, 2) == 2?'AND id != $id':'');

No entendí mui bien esa parte. $id es el numero de id que hai?
Cita:
Me gustaría hacer una probabilidad, es decir, que haia un objeto que no salga casi nunca.
es el id de ese objeto, en ese caso estas dando un 50% de posibilidades de que salga
  #7 (permalink)  
Antiguo 12/01/2012, 12:22
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Random() con posibilidad

Gracias.
Basandome en algunos ejemplos hice esto
Código:
	$prob = rand(1, 100);
	if($prob < $item_info[1]) {
	$id = $item_info[6];
	} elseif($prob > $item_info[1] && $prob < $item_info[2]) {
	$id = $item_info[7];
	} elseif($prob > $item_info[2] && $prob < $item_info[3]) {
	$id = $item_info[8];
	} elseif($prob > $item_info[3] && $prob < $item_info[4]) {
	$id = $item_info[9];
	} elseif($prob > $item_info[4] && $prob < $item_info[5]) {
	$id = $item_info[10];
	}

        $query = mysql_query("SELECT * FROM objetos WHERE id='".$id."'");
el caso es que no me funciona. Alguien ve el error?
  #8 (permalink)  
Antiguo 12/01/2012, 12:31
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Random() con posibilidad

Cabe decir que item_info[1] hasta item_info[5] es el campo probabilidad, de 5 a 10 son los campos de id.
  #9 (permalink)  
Antiguo 12/01/2012, 22:42
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Random() con posibilidad

Hola,

Código PHP:
Ver original
  1. $weights = array(
  2.      2 => 10,
  3.      4 => 10,
  4.     12 => 10,
  5.     24 => 30,
  6. );
  7. $totalWeight = array_sum($weights);
  8.  
  9. function normalize($n) {
  10.     global $weights;
  11.     $s = 0;
  12.     foreach ($weights as $key => $value) {
  13.         $s += $value;
  14.         if ($s >= $n) return $key;
  15.     }
  16.     return false;
  17. }
  18.  
  19. function randomizer() {
  20.     global $totalWeight;
  21.     $i = floor(mt_rand(0, $totalWeight));
  22.     return normalize($i);
  23. }
  24.  
  25. echo "select * from objects where id = " . randomizer();

En $weights tienes un array asociativo con el peso de cada id.

Saludos,

ps:
http://www.forosdelweb.com/f13/bajar...ricion-750353/
  #10 (permalink)  
Antiguo 13/01/2012, 06:34
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años, 7 meses
Puntos: 2
Pregunta Respuesta: Random() con posibilidad

Al respecto de todo esto, me viene al pelo...

Yo tengo una galeria de fotos, y en la pagina inicial se muestra solo una foto de todas ellas que pulsando te lleva a ver la galeria entera....

Lo que me gustaria es hacer que esa foto principal cada vez que entrases fuese una distinta de la galeria al azar completamente...

Puedo llamar a la foto por el ID de la tabla...

Alguna sugerencia??? No tenia ni idea de eso del RAND... iba a ciegas del todo!!

Muchas gracias
  #11 (permalink)  
Antiguo 13/01/2012, 06:52
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Random() con posibilidad

http://dev.mysql.com/doc/refman/5.0/...functions.html
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: mysql, random, tabla
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 22:06.