Probe algo asi y me dio resultado, hubo casos donde aparecieron en &n7 y &n8 los mismos numeros, ahi optaria por tirar nuevamente los dados.
Event Enter
&x = 7
Do 'Sumatoria'
&n1 = Random() * (500 - &suma)
&x = 6
Do 'Sumatoria'
&n2 = Random() * (500 - &n1 - &suma)
&x = 5
Do 'Sumatoria'
&n3 = Random() * (500 - &n1 - &n2 - &suma)
&x = 4
Do 'Sumatoria'
&n4 = Random() * (500 - &n1 - &n2 - &n3 - &suma)
&x = 3
Do 'Sumatoria'
&n5 = Random() * (500 - &n1 - &n2 - &n3 - &n4 - &suma)
&x = 2
Do 'Sumatoria'
&n6 = Random() * (500 - &n1 - &n2 - &n3 - &n4 - &n5 - &suma)
&x = 1
Do 'Sumatoria'
&n7 = Random() * (500 - &n1 - &n2 - &n3 - &n4 - &n5 - &n6 - &suma)
&n8 = 500 - &n1 - &n2 - &n3 - &n4 - &n5 - &n6 - &n7
EndEvent // Enter
Sub 'Sumatoria'
&suma = 0
For &x1 = 1 to &x
&suma = &suma + &x1
Endfor
Endsub
El desafio seria buscar los valores para las replicas, que, a su vez, deben sumar 500.
Lejos de ser bueno en matematicas, se me ocurre ir buscando de a uno los valores e ir restandolos a 500. Asi sucesivamente hasta el anteultimo, mientras que el ultimo resulta de la resta de 500 menos todos los numeros obtenidos.
Ejemplo:
1) Buscar un valor random entre 1 y 490 (no vaya ser que salga el 500 para el primero y el resto de los numeros tengan que ser cero)
2) Luego, buscar un valor random entre 500 menos el valor obtenido con anterioridad menos la cantidad de numeros restantes
3) Asi sucesivamente hasta el anteultimo
4) El ultimo debe ser 500 menos los valores obtenidos con anterioridad
Slds2011/12/22 Juan Carlos Báez <juancarlos.baez@gmail.com>
Seria interesante saber como lo implementaste, con el random y la lógica adecuada, no deberías tener problemas.
Saludos!
De: Claudio Saldaña [mailto:claudio.saldana@gmail.com]
Enviado el: jueves, 22 de diciembre de 2011 13:11
Para: csharp-l@gxtech.com.uy; gx-l
Asunto: [csharp-l] Datos Aleatorios
Estimados Foristas
Una consulta
Tengo una lista de datos que no superará nunca los 10: ejemplo:
LISTA A:
1,2
3,0
4,5
6,8
3,9
5,5
2,9
1,0
Y tengo que llenar una tabla con 500 valores pero la restricción es que estos 500 valores integren la lista A, y el llenado tiene que sea de selección aleatoria, es decir, replicar cada uno de los 8 valores de la lista A de forma aleatoria de manera que la suma total sea 500.
Para ejemplificar aun más:
Ejemplo Aleatorio 1:
LISTA A:
1,2 replicado 50 veces en Lista B:
3,0 replicado 70 veces en Lista B
4,5 ..............120
6,8 ..............100
3,9 ...............82
5,5 ...............30
2,9 ...............15
1,0 ...............33
Total Lista B: 500
Ejemplo Aleatorio 2:
LISTA A:
1,2 replicado 50 veces en Lista B:
3,0 replicado 100 veces en Lista B
4,5 ..............60
6,8 ..............8
3,9 ...............93
5,5 ...............46
2,9 ...............78
1,0 ...............65
Total Lista B: 500
Estuve tratando utilizar el Random pero no me funcionó
Cualquier ayuda es bienvenida..
GRacias
GxXEvo1 U6
Saludos
Claudio Saldaña Yáñez
--
Has recibido este mensaje porque estás suscrito al grupo "GeneXus" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a genexus@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a genexus+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/genexus?hl=es.
0 Response to "Re: [csharp-l] Datos Aleatorios"
Publicar un comentario