Discussion:
Numeros aleatorios
(demasiado antiguo para responder)
Carla
2004-04-17 22:45:02 UTC
Permalink
Hola compis, quisiera hacer una combinacion de la Loteria
Primitiva con el Excel osea: poner de 1 al 49 y que el
Excel escoja aleatoriamente los 6 numeros se puede hacer.
Gracias,
CLARA
Héctor Miguel
2004-04-18 04:30:43 UTC
Permalink
hola, Carla !
... hacer una combinacion de la Loteria Primitiva con el Excel
... de 1 al 49 y que el Excel escoja aleatoriamente los 6 numeros [...]
-segun yo- la forma mas facil, rapida, sencilla [y ademas... 'azarosa'] es...
'generar' los seis numeros [entre 1 y 49] 'al azar' con la funcion aleatorio.entre y...
'separarlos' por alguna cadena de caracteres [como p.e. un punto] ;)

prueba la siguiente formula [es en una sola linea y 'mi' separador de argumentos es la coma]
=Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)

saludos,
hector.
Jesús Román
2004-04-18 07:52:53 UTC
Permalink
Hola madrugador!!!
Buenos dias Hector Miguel! hay un pequeño fallo en la formula, pues, repite
alguna vez los numeros y en las primitivas han de ser seis numeros
distintos.
Bueno, a mi no me interesa, solo lo miraba por curiosidad o por vicio, no
obstante al observarlo, no he podido evitar escribirte.
Un cordial saludo!
Post by Héctor Miguel
hola, Carla !
... hacer una combinacion de la Loteria Primitiva con el Excel
... de 1 al 49 y que el Excel escoja aleatoriamente los 6 numeros [...]
-segun yo- la forma mas facil, rapida, sencilla [y ademas... 'azarosa'] es...
'generar' los seis numeros [entre 1 y 49] 'al azar' con la funcion aleatorio.entre y...
'separarlos' por alguna cadena de caracteres [como p.e. un punto] ;)
prueba la siguiente formula [es en una sola linea y 'mi' separador de argumentos es la coma]
=Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)
saludos,
hector.
Fernando Arroyo
2004-04-18 08:03:27 UTC
Permalink
Hace algún tiempo se planteó en este grupo lo mismo, y yo escribí el siguiente sub:

Sub Aleatorio6_49()
Dim v As Byte, s As String, m As Variant
'Crear la matriz con los 6 números
Do
v = Int((49 - 1 + 1) * Rnd + 1)
If InStr(s, Right("0" & v, 2)) = 0 Then
s = s & IIf(Len(s) = 0, "", ",") & Right("0" & v, 2)
End If
m = Split(s, ",")
If UBound(m) = 5 Then Exit Do
Loop

'Volcar matriz a hoja
For v = 1 To 6
Worksheets("Hoja1").Range("A" & v) = m(v - 1)
Next v

'Ordenar rango A1:A6
Worksheets("Hoja1").[A1:A6].Sort _
Key1:=Range("A1"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

Si lo pruebas, hazlo en un libro vacío porque el código vuelca los 6 números en el rango A1:A6 de Hoja1, y si hubiera algún dato en dichas celdas se perderían.
Un saludo.


Fernando Arroyo
MS MVP - Excel
Post by Jesús Román
Hola madrugador!!!
Buenos dias Hector Miguel! hay un pequeño fallo en la formula, pues, repite
alguna vez los numeros y en las primitivas han de ser seis numeros
distintos.
Bueno, a mi no me interesa, solo lo miraba por curiosidad o por vicio, no
obstante al observarlo, no he podido evitar escribirte.
Un cordial saludo!
Post by Héctor Miguel
hola, Carla !
... hacer una combinacion de la Loteria Primitiva con el Excel
... de 1 al 49 y que el Excel escoja aleatoriamente los 6 numeros [...]
-segun yo- la forma mas facil, rapida, sencilla [y ademas... 'azarosa']
es...
Post by Héctor Miguel
'generar' los seis numeros [entre 1 y 49] 'al azar' con la funcion
aleatorio.entre y...
Post by Héctor Miguel
'separarlos' por alguna cadena de caracteres [como p.e. un punto] ;)
prueba la siguiente formula [es en una sola linea y 'mi' separador de
argumentos es la coma]
Post by Héctor Miguel
=Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)
saludos,
hector.
Héctor Miguel
2004-04-18 09:49:36 UTC
Permalink
hola, chicos !
Jesús Román escribio en el mensaje
Hola madrugador!!! ... un pequeño fallo en la formula ... repite alguna vez los numeros [...]
=> ¡ cierto !!!
'tendras que'... re-calcular el modelo =>{F9}<= una o dos veces 'cada...' [que se de el caso] :((
[solo me parecio la manera 'mas rapida'... al fin que... se trata de 'dejar al azar' el resultado] ;)
=> aahhh ! con respecto a lo de 'madrugador'... 'chas gracias [lo que pasa es que 'a veces'... no duermo] :(
Fernando Arroyo escribio en el mensaje
Hace ... tiempo se planteo ... lo mismo ... siguiente sub [...]
... hazlo en un libro vacio ... vuelca los 6 números en el rango A1:A6 de Hoja1, y si hubiera algún dato [...]
=> una 'variante' [pudiera ser] una funcion que 'devuelva' una cadena de texto [donde 'se llame'] +/- como:
[esta propuesta es SOLO porque la funcion 'split' NO 'funciona' en excel '97... y... 'todavia' esta 'vigente'] ;)
Function Loteria() As String
Dim Sig As Integer, Bolita As New Collection, Bolitas As Variant
Application.Volatile
Do: On Error Resume Next
Bolitas = Int((Rnd * 49) + 1)
Bolita.Add Bolitas, CStr(Bolitas)
Loop Until Bolita.Count = 6
Bolitas = ""
For Sig = 1 To 6
If Bolitas <> "" Then Bolitas = Bolitas & "."
Bolitas = Bolitas & Bolita.Item(Sig)
Next
Loteria = Bolitas
End Function

saludos,
hector.
Jesús Román
2004-04-18 18:59:21 UTC
Permalink
Entendido... era válida y rápida. A veces somos algo perfeccionistas y eso
se puede convertir en un defecto.
Espero que lo de no dormir 'a veces' no sea muy a menudo, pues de ser así
vamos a coincidir en mas de una ocasión a horas intespectivas....
Saludos.
Post by Héctor Miguel
hola, chicos !
Jesús Román escribio en el mensaje
Hola madrugador!!! ... un pequeño fallo en la formula ... repite alguna
vez los numeros [...]
Post by Héctor Miguel
=> ¡ cierto !!!
'tendras que'... re-calcular el modelo =>{F9}<= una o dos veces
'cada...' [que se de el caso] :((
Post by Héctor Miguel
[solo me parecio la manera 'mas rapida'... al fin que... se trata de
'dejar al azar' el resultado] ;)
Post by Héctor Miguel
=> aahhh ! con respecto a lo de 'madrugador'... 'chas gracias [lo
que pasa es que 'a veces'... no duermo] :(
Post by Héctor Miguel
Fernando Arroyo escribio en el mensaje
Hace ... tiempo se planteo ... lo mismo ... siguiente sub [...]
... hazlo en un libro vacio ... vuelca los 6 números en el rango A1:A6
de Hoja1, y si hubiera algún dato [...]
Post by Héctor Miguel
=> una 'variante' [pudiera ser] una funcion que 'devuelva' una cadena de
[esta propuesta es SOLO porque la funcion 'split' NO 'funciona' en
excel '97... y... 'todavia' esta 'vigente'] ;)
Post by Héctor Miguel
Function Loteria() As String
Dim Sig As Integer, Bolita As New Collection, Bolitas As Variant
Application.Volatile
Do: On Error Resume Next
Bolitas = Int((Rnd * 49) + 1)
Bolita.Add Bolitas, CStr(Bolitas)
Loop Until Bolita.Count = 6
Bolitas = ""
For Sig = 1 To 6
If Bolitas <> "" Then Bolitas = Bolitas & "."
Bolitas = Bolitas & Bolita.Item(Sig)
Next
Loteria = Bolitas
End Function
saludos,
hector.
Jesús Román
2004-04-18 18:47:07 UTC
Permalink
Magistral !


"Fernando Arroyo" <***@ESTOwanadoo.es> escribi� en el mensaje news:***@TK2MSFTNGP12.phx.gbl...
Hace algún tiempo se planteó en este grupo lo mismo, y yo escribí el
siguiente sub:

Sub Aleatorio6_49()
Dim v As Byte, s As String, m As Variant
'Crear la matriz con los 6 números
Do
v = Int((49 - 1 + 1) * Rnd + 1)
If InStr(s, Right("0" & v, 2)) = 0 Then
s = s & IIf(Len(s) = 0, "", ",") & Right("0" & v, 2)
End If
m = Split(s, ",")
If UBound(m) = 5 Then Exit Do
Loop

'Volcar matriz a hoja
For v = 1 To 6
Worksheets("Hoja1").Range("A" & v) = m(v - 1)
Next v

'Ordenar rango A1:A6
Worksheets("Hoja1").[A1:A6].Sort _
Key1:=Range("A1"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

Si lo pruebas, hazlo en un libro vacío porque el código vuelca los 6 números
en el rango A1:A6 de Hoja1, y si hubiera algún dato en dichas celdas se
perderían.
Un saludo.


Fernando Arroyo
MS MVP - Excel
Post by Jesús Román
Hola madrugador!!!
Buenos dias Hector Miguel! hay un pequeño fallo en la formula, pues, repite
alguna vez los numeros y en las primitivas han de ser seis numeros
distintos.
Bueno, a mi no me interesa, solo lo miraba por curiosidad o por vicio, no
obstante al observarlo, no he podido evitar escribirte.
Un cordial saludo!
Post by Héctor Miguel
hola, Carla !
... hacer una combinacion de la Loteria Primitiva con el Excel
... de 1 al 49 y que el Excel escoja aleatoriamente los 6 numeros [...]
-segun yo- la forma mas facil, rapida, sencilla [y ademas... 'azarosa']
es...
Post by Héctor Miguel
'generar' los seis numeros [entre 1 y 49] 'al azar' con la funcion
aleatorio.entre y...
Post by Héctor Miguel
'separarlos' por alguna cadena de caracteres [como p.e. un punto] ;)
prueba la siguiente formula [es en una sola linea y 'mi' separador de
argumentos es la coma]
Post by Héctor Miguel
=Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)&"."
&Aleatorio.Entre(1,49)
saludos,
hector.
Loading...