PHP - X numeros ramdom que sumados me den Y

 
Vista:

X numeros ramdom que sumados me den Y

Publicado por abdel andres cartagena castro (2 intervenciones) el 08/09/2017 19:06:20
Buenas a todos,

Necesito hacer un algoritmo de X números ramdom enteros que sumados me den Y.
Ejemplo: $X = 30; $Y = 500;
30 números enteros generados aleatoria-mente pero que la suma de dichos números sean igual a 500.

Suena fácil pero cuando lo empece a desarrollar me encontré que era un poco complejo y no quiero hacerlo usando demasiadas lineas de código.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de facundo

X numeros ramdom que sumados me den Y

Publicado por facundo (185 intervenciones) el 09/09/2017 17:38:08
ayayayay y la gente sigue esperando que le resuelvan algoritmos complejos

y ademas... porque buscar la perfección de no querer hacerlo en muchas lineas de codigo si nisiquiera te sale en muchas lineas? menos te va a salir en pocas.......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

X numeros ramdom que sumados me den Y

Publicado por abdel andres cartagena castro (2 intervenciones) el 10/09/2017 22:36:46
Ya lo resolví amigo, y veo que eres lo que la gente llama como programador mediocre, claro y si es que por lo menos sabe programar, igual muchas por tu comentario :D.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-3
Comentar
Imágen de perfil de facundo

X numeros ramdom que sumados me den Y

Publicado por facundo (185 intervenciones) el 11/09/2017 01:58:20
Yo programador mediocre? En que se basa tu conclusion? Yo estoy recien hace 3 meses aprendiendo a programar y ya hice muchas cosas y tambien me quedan muchisimas mas por aprender.

La verdad que si me ponia a intentarlo de seguro lo sacaba, pero la verdad no andube con tiempo como para enroscarme solucionandole un algoritmo a otro.

Ya que preguntaste si queres compartinos tu solucion. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

X numeros ramdom que sumados me den Y

Publicado por xve (6935 intervenciones) el 11/09/2017 09:02:46
Abdel estaría bien que mostraras como lo has solucionado... en vez de descalificar!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

X numeros ramdom que sumados me den Y

Publicado por kip (877 intervenciones) el 09/09/2017 22:28:24
Hola, basandome en una respuesta muy interesante de Stackoverflow https://stackoverflow.com/a/43171361/6591929, he creado algo pero que solo representa números enteros(en lugar de decimales que es lo que hacen en el enlace anterior).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$number = 500;
$randoms = 30;
 
$nums = array();
 
while ($randoms--) {
    $nums[] = rand(0, 10) / 10;
}
 
$sum = array_sum($nums);
 
foreach ($nums as $k => $num) {
    $nums[$k] /= $sum;
    $nums[$k] *= $number;
}
 
//Transformo a un entero todos los numeros, redondeando hacia abajo
$nums = array_map('floor', $nums);
 
// Ordeno el array
sort($nums);
 
//Elimino el ultimo elemento del array para luego reemplazarlo
array_pop($nums);
 
//Reemplazo el numero anteriormente eliminado con la diferencia entre la suma total de los numeros generados y el numero a obtener
$nums[] = $number - array_sum($nums);
 
//Lo desordeno
shuffle($nums);
 
//Lo muestro
print_r($nums);

Resultado:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Array
(
    [0] => 9
    [1] => 12
    [2] => 6
    [3] => 47
    [4] => 22
    [5] => 3
    [6] => 6
    [7] => 16
    [8] => 16
    [9] => 6
    [10] => 6
    [11] => 22
    [12] => 3
    [13] => 6
    [14] => 32
    [15] => 29
    [16] => 0
    [17] => 19
    [18] => 16
    [19] => 16
    [20] => 25
    [21] => 16
    [22] => 25
    [23] => 16
    [24] => 29
    [25] => 32
    [26] => 6
    [27] => 22
    [28] => 25
    [29] => 12
)

Nos cuentas si te sirve.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar