- Tengo cuatro variables, con un numero del 0 a 100:
Código PHP:
$variable1= 20;
$variable2= 80;
$variable3= 30;
$variable4= 50;
¿Como lo hago?
Gracias.
| |||
![]() Hola, bueno, mirad, tengo la siguiente cuestion: - Tengo cuatro variables, con un numero del 0 a 100: Código PHP: ¿Como lo hago? Gracias. |
| |||
Respuesta: Calcular aleatoriedad pero controlada Cómo yo lo veo: esto sería como extraer un valor de una lista "ponderada", de una manera similar a como se sacan los banners en un sistema de publicidad. A mayor peso, más probabilidades de salir. Yo lo haría así: - Crear un array con los valores, en lugar de tenerlos en variables diferentes: $pesos[] = array(0, 20, 80, 30, 50); - Crear una lista con los pesos multiplicados por un valor aleatorio: $valores = array(); foreach ($pesos as $peso) { $valores[] = $peso * funcion_random(); // no recuerdo la sintaxis de las funciones random } - Ordenar de mayor a menor la lista $valores, manteniendo los índices (quizá habría que asignarles un índice tipo 'id' tanto al crear $pesos como al crear $valores). - La primera posición de la "nueva" lista es la posición buscada. Creo que me he liado algo con la explicación, pero si te lo miras un poco verás que la idea es bastante sencilla. Si en vez de tenerlo en PHP lo tuvieras en BD, sería algo como esto: SELECT id FROM valores ORDER BY peso * rand() DESC LIMIT 0, 1 |
| |||
Respuesta: Calcular aleatoriedad pero controlada |
| |||
Respuesta: Calcular aleatoriedad pero controlada Hola Juanfuentes, gracias por leer y entender mi mensaje te estoy muy agradecido. Lo que me falta por saber es: Cita: Es decir ya tengo un array de 3 posiciones($variable[1],$variable[2],$variable[3]), en cada posicion tengo un valor diferente.Ordenar de mayor a menor la lista $valores, manteniendo los índices (quizá habría que asignarles un índice tipo 'id' tanto al crear $pesos como al crear $valores). ¿Como puedo saber que posicion del array es la que mas valor tiene? Muchas gracias. |
| |||
Respuesta: Calcular aleatoriedad pero controlada No se si existe una funcion que lo haga directamente pero basicamente seria: Código PHP: Saludos
__________________ alquiler gesell |
| |||
Respuesta: Calcular aleatoriedad pero controlada Gracias acknowledge, Casi lo tengo resuelto, ahora me encuentro con otro problema para mi dificil (De calculo), Digamos que tenemos dos variables que pueden tomar un valor de 1 hasta 255, ¿Como puedo asociarles un porcentaje? Es decir, la variable con el valor de 255, tendria un 99% La variable con el valor de 1, tendria un 1%. Otro ejemplo Una variable con un valor de 128 tendria un 51%, Y otra con un valor de 64 tendria un 25% ¿Como podria hacerlo? Muchas gracias. |
| |||
Respuesta: Calcular aleatoriedad pero controlada No se si entiendo bien la idea. Se podría hacer como dijo juanfuentes pero con 255 numeros. o hacer para el segundo caso por ejemplo: una random de 1 a 100 si sale entre 1 y 25 asignar que salio el 64 si sale entre 25 y 76 asignar que salio el 128 y asignar los restantes. En simulacion numerica yo lo conozco con funciones continuas (este caso es discreto) y es similar solo que al numero aleatorio se le aplica una funcion continua. Saludos
__________________ alquiler gesell |
| |||
Respuesta: Calcular aleatoriedad pero controlada No, no me refiero a eso, me refiero sobre un 100% cual maximo es 255, Si la variable 1 da la mitad de este numero su porcentaje es 50% Si la variable da por ejemplo 1, su porcentaje es 1% (en realidad seria algo com 0,1% pero se redondearia) ¿Se me entiende? Un saludo. |
| |||
Respuesta: Calcular aleatoriedad pero controlada Hola. Te voy a dar una mano mas que nada con el pseudo código. Posiblemente tenga algunos errores de sintaxis o de procedimiento lo que escribo, pero fijate que es correcto desde la lógica, y eso es en lo que quería aportar mas que nada. La manera en que solucionaría eso que proponés ultimo sería con varios if. Primero usas cosas de lógica o de probabilidad: Vamos al caso mas facil: Cita: Pones una variable auxiliar que pueda tomar valores entre 0 y 99.Es decir, la variable con el valor de 255, tendria un 99% La variable con el valor de 1, tendria un 1%. y le asignas un valor random entre 0 y 99. primero declaras: $variable1 = 1; $variable2 = 255; después preguntas: Cita: Entonces hay un 1% de posibilidades de que la variable que vale 1 salga y un 99% de que salga la de 255.
Iniciado por php if ( $varaux == 0) $variableasignada = $variable1 ; else $variableasignada = $variable2; Ahora vamos al otro caso: Cita: Ahora es un poco distinto. Además agrego una variable3 que tenga un 24% de posibilidades así los números cierran en 100.Una variable con un valor de 128 tendria un 51%, Y otra con un valor de 64 tendria un 25% $variable1 = 128 ; $variable2 = 64 ; $variable3 = lo que quieras ; Cita:
Iniciado por php if ( $varaux <= 50 ) // varaux está entre 0 y 50 inclusive (51%) $variableasignada = $variable1 ; else if ( ($varaux >= 50) && ($varaux <= 75) ) // varaux está entre 51 y 75 inclusive (25%) $variableasignada = $variable2; else $variableasignada = $variable3 ; /* o acá hacés lo que necesites hacer, no necesariamente asignar una variable3 */ PD: esto es lo que entendí yo por "aleatoreidad controlada". Es decir, vos podés controlar con cuánta probabilidad querés que salga una variable, y eso lo controlás con los if. Los 2 ejemplos en la manera en que los hice están sujetos a porcentajes enteros, no decimales. En ese caso aproximá. Ahora, si lo que querés es que vaya variando la probabilidad de que ocurran, ahí podrías introducir otras variables aleatorias, y meterlas adentro de esos if. Última edición por _Maxi; 20/07/2008 a las 18:24 |
| |||
Respuesta: Calcular aleatoriedad pero controlada Queres la acumulacion de probabilidad que se conoce como P (P mayuscula)? P(n)=n*(1/255) y multiplicala por 100 si lo queres en porcentaje vale si los 255 numeros tienen la misma probabilidad
__________________ alquiler gesell |
| |||
Respuesta: Calcular aleatoriedad pero controlada Astut, si lo que pides no es lo que yo puse, por favor trata de explicar todo de nuevo. Porque se hace dificil entende qué es lo que necesitas. Saludos. |
| |||
Respuesta: Calcular aleatoriedad pero controlada Hola, acknowledge Gracias por la funcion me ha sevido, _Maxi con tu codigo me veria limitado ya que podia salir cualquier valor pero gracias. Ahora queda otra cuestion. Tengo una variable con un valor de 150 que da 59% Tengo otra variable con un valor de 2 que da 1% A partir de esto, ¿Como saco aleatoriamente una de las dos variables siendo la de 59% mucho mas probable? Hehe es el paso final que queda. Muchas gracias |
| |||
Respuesta: Calcular aleatoriedad pero controlada Qué es "dar" ? No entiendo a qué te referís cuando decís: Cita: Tengo una variable con un valor de 150 que da 59% |
| |||
Respuesta: Calcular aleatoriedad pero controlada Usando la funcion P(n) descrita anteriormente a eso me refiero. Lo hago por pasos, Primero tengo dos variables, una con un valor de 150 y otra con un valor de 2. Les paso la funcion P(n) que resulta, la variable con un valor de 2 da un 1%, y la variable con un valor de 150 da un 59%. Y ahora quiero lo que he dicho anteriormente. ¿Se entiende? Muchas gracias. |