Está en la página 1de 3

516 160 229 693 772 129 635 585 468 555 497 670 90 422 270 195

154 481 499 912 409 449 905 539 105 876 502 623 728 884 681 149 322 333 35 131 312 443 581 165 134 444 515 568 408 889 40 897 591 243 23 418 701 789 56

Generacin de nmeros aleatorios enteros nicos (sin repeticin)


Opciones Limpia Genera Aleatoris nicos 1
Genera Aleatoris nicos 2

Son dos macros muy parecidas que generan nm aleatorios enteros nicos (sin repeticin).

Sub unicos1() Dim i As Integer, j As Integer Dim A() As Long Dim esta As Boolean Dim x As Long, y As Long, z As Long, num As Long x = Application.InputBox(prompt:="Entre el nmero aleatorio inicial" _ , Title:="Generador de Nmeros Aleatorios", Default:=1, Type:=1) y = Application.InputBox(prompt:="Entre el nmero aleatorio final" _ , Title:="Generador de Nmeros Aleatorios", Default:=1000, Type:=1) z = Application.InputBox(prompt:="Cuantos nmeros aleatorios desea generar?" _ & " (<15000)?" _ , Title:="Generador de Nmeros Aleatorios", Default:=100, Type:=1) If z = 0 Then Exit Sub If z > 15000 Then z = 15000 If z > y - x + 1 Then MsgBox "!Ha especificado ms nmeros " _ & "de los que son posibles en el rango!" Exit Sub End If ReDim A(z) Randomize A(1) = Int((y - x + 1) * Rnd + x) For i = 2 To z Do num = Int((y - x + 1) * Rnd + x) esta = False For j = 1 To i - 1 If num = A(j) Then esta = True: Exit For Next j Loop While esta A(i) = num Next i For i = 1 To z Cells(i, 2) = A(i) Next i End Sub Sub Limpia() Range("B1").CurrentRegion.ClearContents Range("A1").Select End Sub

990 393 652 141 143 667 831 931 472 850 451 914 993 491 731 948 830 183 860 298 718 925 39 964 188 374 659 806 834 15 205 671 707 455 824 715 512 121 29 7 838 550 680 819 137

ios enteros nicos (sin repeticin)


Son dos macros muy parecidas que generan nmeros aleatorios enteros nicos (sin repeticin).

Default:=1000, Type:=1) eros aleatorios desea generar?" _

Default:=100, Type:=1)

Sub unicos2() Dim x As Long, y As Long, z As Long, num As Long Dim control As Boolean Dim i As Long Dim celda As Range x = Application.InputBox("Entre el nmero aleatorio inicial" _ , "Generador de Nmeros Aleatorios", 1, , , , , 1) y = Application.InputBox("Entre el nmero aleatorio final" _ , "Generador de Nmeros Aleatorios", 1000, , , , , 1) z = Application.InputBox("Cuantos nmeros aleatorios desea generar?" _ & " (<15000)?" _ , "Generador de Nmeros Aleatorios", 100, , , , , 1) If z = 0 Then Exit Sub If z > 15000 Then z = 15000 If z > y - x + 1 Then MsgBox "!Ha especificado ms nmeros " _ & "de los que son posibles en el rango!" Exit Sub End If Randomize Cells(1, 2) = Int((y - x + 1) * Rnd + x) For i = 2 To z Do control = False Randomize num = Int((y - x + 1) * Rnd + x) Set celda = Range("b1", Range("b1").End(xlDown).Address). _ Find(num, LookIn:=xlValues, LookAt:=xlWhole) If Not (celda Is Nothing) Then control = True End If Loop Until Not control Cells(i, 2) = num Next End Sub

También podría gustarte