millä koodinpätkällä saa numerot arpomaan silleen että se ei arvo samoja numeroita uudestaan...
mulla tähän asti seuraavanlainen koodipätkä:
Int((100 * Rnd()) 1)
...eli se arpoo luvun väliltä 1-100, mutta miten saadaan että se ei arvo samaa numeroa toista kertaa?
mulla tähän asti seuraavanlainen koodipätkä:
Int((100 * Rnd()) 1)
...eli se arpoo luvun väliltä 1-100, mutta miten saadaan että se ei arvo samaa numeroa toista kertaa?
Vastaukset 4
Vanhimmat
Avainsana on Randomize.
Koodi sinällään on oikein mutta kuten niin monesti on tälläkin palstalla puhuttu, tietokoneen "satunnaisluvut" eivät ole satunnaisia ilman alustusta.
Jo arvotut numerot muistiin collectioniin, muuttujiia tms. ja jos tulee sama, uusi kierros.
Randomize täytyy olla, jotta yleensä lukujen generointi tapahtuu oikein.
Mutta, miten tutkia helposti, onko luku jo arvottu.
Olen tehnyt arvottavia lukuja vastaavan muuttujan, jonka tilaksi asetetaan 'True' kun luku on arvonnasta tullut.
Dim lukux(100) As Boolean
For x = 1 To 100
lukux(x) = False
Next x
Randomize
For s = 1 To 10 'kuinka monta lukua arvotaan, tässä 10
arvonta:
luku = Int((100 - 1 1) * Rnd 1)
'tutkitaan onko luku jo ennestään arvottu
'jos oli, tehdään uusi arvonta
If lukux(luku) = True Then GoTo arvonta
'tulostetaan arvottu luku ja
'merkataan se arvotuksi
Print luku
lukux(luku) = True
Next s
'tulostetaan arvottu luku ja
'merkataan se arvotuksi
Print luku
lukux(luku) = True
Toi Print heittää sen numeropätkän vaan pystysuorassa alaspäin. Mites sä tulostat sen lbl.captioniin vaakaan "," eroteltuna ?