Jag håller på med ett program som ska slumpa fram nummer men problemet är att det inte får bli samma nummer i någon av rutorna. Detta verkar funka: Hej Känns lite vettigare med boolean... HejRandomize
min kod:
Dim x As Integer
Dim i
For i = 1 To 8
Randomize
x = Rnd * 27 + 1 'ett nummer mellan 1 och 28
Label1(i) = x
Label1(i).Top = "850" 'olika labels ställs upp för att visa vilka
Label1(i).Left = i * "820" 'nummer som slumpats
Next i
det kommer upp nummer mellan 1 och 27 men i bland kan det bli 3 st åttor och det ska det inte vara!
någon som har en idé?Sv: Randomize
Dim x As Integer
Dim i, j
Dim used As Boolean
For i = 1 To 8
Randomize
used = True
While used
x = Rnd * 27 + 1 'ett nummer mellan 1 och 28
used = False
For j = 1 To 8
If Label1(i) = CStr(x) Then
used = True
End If
Next j
Wend
Label1(i) = x
Label1(i).Top = "850" 'olika labels ställs upp för att visa vilka
Label1(i).Left = i * "820" 'nummer som slumpats
Next i
/MartinSv: Randomize
Du lägger upp an array tmpArray(28)
Randomize behöver du bara en gång,lägg den i Form Load
Dim tmpArray(28) As Long, i As Long
i = 1
Do until i > 8
x = Rnd * 27 + 1 'ett nummer mellan 1 och 28
If tmpArray(x) = 0 Then
tmpArray(x) = x
Label1(i) = x
Label1(i).Top = "850" 'olika labels ställs upp för att visa vilka
Label1(i).Left = i * "820" 'nummer som slumpats
i = i +1
End If
Loop
Har inte provkört men ungefär så här res ev små fel
mvh
SvenSv: Randomize
Så här:
<code>
Dim Used(28) As Boolean, i As Integer, x As Integer
i = 1
Do Until i > 8
x = Rnd * 27 + 1 'ett nummer mellan 1 och 28
If Not Used(x) Then
Used(x) = True
Label1(i) = x
Label1(i).Top = 850
Label1(i).Left = i * 820
i=i+1
End If
Loop
</code>
Bara min åsikt...
/Niklas JanssonSv: Randomize
>Känns lite vettigare med boolean... Så här:
Kan jag hålla med om,budskapet är att man använder en
array för att undvika dubbletter.
mvh
Sven