Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Controlar porcentaje de random

Estas en el tema de Controlar porcentaje de random en el foro de PHP en Foros del Web. Hola a tod@s !! hay alguna forma de controlar el porcentaje de que salga un número "aleatorio". De decir, del rango del 0 al 100, ...
  #1 (permalink)  
Antiguo 31/03/2015, 01:35
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Pregunta Controlar porcentaje de random

Hola a tod@s !!
hay alguna forma de controlar el porcentaje de que salga un número "aleatorio".

De decir, del rango del 0 al 100, quiere tener un 1% de que salga un número mayor de 50.

¿Existe alguna forma de hacer eso?
  #2 (permalink)  
Antiguo 31/03/2015, 02:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Controlar porcentaje de random

Creo que la función random() no permite dicho comportamiento, ¿por qué no revisas el manual para estar seguro?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 31/03/2015, 02:33
 
Fecha de Ingreso: junio-2011
Ubicación: Asturias
Mensajes: 228
Antigüedad: 12 años, 10 meses
Puntos: 14
Respuesta: Controlar porcentaje de random

Creo que no.
Pero puedes utilizar la función random y la lógica para conseguir el mismo resultado:

-Saca un número del 1 al 100 con la función random

-Si sacas un 1, entonces saca un número del 50 al 100.
-Si sacas cualquier otro número que no sea el uno, entonces saca un número del 1 al 50.
Con eso tienes una posibilidad entre 100 de sacar un número mayor de 50 ¿no?
Un saludo
  #4 (permalink)  
Antiguo 31/03/2015, 04:18
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Controlar porcentaje de random

La funcion random() segun he visto no puedo controlar el porcentaje.
Lo que dice "javierflti", no lo llego a comprender.

¿Algun codigo en PHP así rápido para ir metiendonos en materia y que vayamos experimentando?
  #5 (permalink)  
Antiguo 31/03/2015, 11:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Controlar porcentaje de random

La función rand() admite dos argumentos, el mínimo y el máximo.

Cita:
¿Algun codigo en PHP así rápido para ir metiendonos en materia y que vayamos experimentando?
Ahora, el porcentaje tampoco lo puedes controlar pero al menos puedes tener rangos:
Código PHP:
Ver original
  1. $ranges = [
  2.   1 => [50, 100]
  3. ];

Suponiendo que tienes una lista completa de los rangos por porcentaje, sólo resta obtener dicho "porcentaje" inicial:
Código PHP:
Ver original
  1. $index = rand(0, 100);
  2.  
  3. list($min, $max) = $ranges[$index];
  4.  
  5. echo rand($min, $max);

¿Se entiende la idea?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 31/03/2015, 12:16
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Controlar porcentaje de random

Te referirás a esto:
Código PHP:
$min 0;
$max 100;

$index rand($min$max);
list(
$min$max) = $ranges[$index];
 
echo 
rand($min$max); 
Pero aún así esto no funciona, ya q siempre sale 0.
  #7 (permalink)  
Antiguo 31/03/2015, 12:33
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Controlar porcentaje de random

Revisa que lo que haces no es lo mismo.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 31/03/2015, 12:56
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Controlar porcentaje de random

No probe la solucion!!!, pero quizas la idea te sirva.

//Podrias utilizar esto, pero para que funcione debes saber antes cuantos nros vas a generar:
$can=100; //cantidad de nros a generar
$min=1;
$max=100;
$mat=array(0,0);
for ( $i=0; $i<$can; $i++ ) {
$ale=rand($min,$max);

// evaluamos valor obtenido e incrementamos la cantidad para valores bajos, o altos
if ( $ale>50 ) {
$mat[0]++; //cantidad de numeros bajos
} else {
$mat[1]++; //cantidad de numeros altos
}

// si se genero el 1% de los numeros altos, limitas el maximo obligando a generar nros bajos
if ($mat[1]*100/$can>1) { //calculamos porcentaje de nros altos
$min=1;
$max=50;
}
}
  #9 (permalink)  
Antiguo 01/04/2015, 00:21
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Controlar porcentaje de random

Faltaría mostrar en numero:
Código PHP:
echo $ale 
De esta forma salen todos menos de 50.

Teniendo el 1% debería salir al menos 1 vez, un numero mayor que 50.
¿No es así?

Para alterar ese 1% y aumentarlo al 5% ¿como seria?
Código PHP:
$mat[1]*100/$can>
  #10 (permalink)  
Antiguo 01/04/2015, 06:50
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Controlar porcentaje de random

Exactamente el control del porcentaje es aqui
$porcentaje=$mat[1]*100/$can
de modo que
if ( $mat[1]*100/$can > 5) {
...
}

Fue un error mio por no probar, simplemente deberias incluir el 50
// evaluamos valor obtenido e incrementamos la cantidad para valores bajos, o altos
if ( $ale>=50 ) {
$mat[0]++; //cantidad de numeros altos
} else {
$mat[1]++; //cantidad de numeros bajos
}

o podrias simplificar las cosas generar primero el 1% de los numeros controlando
$min y max en un bucle y luego el resto en otro bucle.
  #11 (permalink)  
Antiguo 01/04/2015, 08:19
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Controlar porcentaje de random

Gracias !!
Parece que funciona, bien...
Me lo miraré unos días y si no se me ocurren dudas, cerraré el tema por solucionado.

Etiquetas: random
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 10:57.