Nabídka portálu se při zobrazení článku přesouvá na konec pravého sloupce nabídek.
Funkce pro vygenerování pole náhodných čísel ve VB |
Autor: administrator
| Zdroj:
| Vytvořeno: 21.11.2003
| Publikováno: 22.11.2003
| Čtenářů: 3740
| Unikátních: 3670
|
Potřebujete vygenerovat pole deseti celých čísel od 5 do 55 tak aby se neopakovaly, jindy se naopak mohou opakovat.Zdroj parametrizovatelné funkce, která to udělá za vás najdete přímo zde.
Funkce jejíž kód je uveden níže Vám vygeneruje pole celých kladných čísel v zadaném rozsahu a počtu.Čísla se mohou volitelně opakovat, nebo lze opakování čísel vypnout.
A takto bychom vygenerovali například balík karet:
Takže, karet máme 32 potřebujeme tedy 32 čísel v rozsahu 1 až 32 bez opakování.Funkci bychom volali takto:
Dim PoleMoje As Variant
PoleMoje = Generuj(1, 32, 32, False)
'vypis pro kontrolu
For i = LBound(PoleMoje) To UBound(PoleMoje)
debug.print PoleMoje(i)
Next i
Syntaxe funkce je takováto:
Generuj(Minimum As Long, _
Maximum As Long, _
Kolik As Long, _
Volitelně Opakovat (True/false)) _
výstup je pole (variant)
a následuje zdrojový kód funkce:
Function Generuj(ByVal lMin As Long, _
ByVal lMax As Long, _
ByVal lKolik As Long, _
Optional ByVal bOpakovat As Boolean = True) _
As Variant
Dim arrPole() As Long
ReDim arrPole(lKolik - 1)
Dim Stav As Boolean
Dim i, j
Dim lngCislo As Long
Randomize Timer
For i = LBound(arrPole) To UBound(arrPole)
Stav = False
If Not bOpakovat Then
Do While Not Stav
Stav = True
lngCislo = Int(((lMax) * Rnd) + lMin)
Debug.Print lngCislo
For j = LBound(arrPole) To UBound(arrPole)
If arrPole(j) = lngCislo Then Stav = False
Next
If Stav Then
arrPole(i) = lngCislo
Exit Do
End If
DoEvents
Loop
Else
lngCislo = Int(((lMax) * Rnd) + lMin)
arrPole(i) = lngCislo
End If
Next
Generuj = arrPole
End Function
|