Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

slucajni izbor brojeva uz uslov

[es] :: Visual Basic 6 :: slucajni izbor brojeva uz uslov

[ Pregleda: 1023 | Odgovora: 13 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zormar

Član broj: 129240
Poruke: 155
*.adsl.static.sezampro.yu.



Profil

icon slucajni izbor brojeva uz uslov07.05.2007. u 19:57

Kako napraviti slucajan izbor brojeva
Code:
for i=1 to 5
A(i)=int(rnd*10)+1 
next i
uz uslov da je zbir izabranih brojeva jednak broju upisanom u Textbox.
07.05.2007. u 19:57 

dennycd2

Član broj: 127351
Poruke: 54
*.dynamic.sbb.co.yu.



Profil

icon Re: slucajni izbor brojeva uz uslov08.05.2007. u 17:30
Ne znam da li si ovo tražio, ali pogledaj može ti pomoći.

Code:

Option Explicit

Private Sub Command1_Click()
    
    Dim a(5) As Integer
    Dim i As Integer
    Dim b As Integer
    Dim x As Long

    x = 0
    
    If Val(Text1.Text) < 5 Or Val(Text1.Text) > 50 Then
        MsgBox "Izabrao si prevelik ili premali broj!", vbCritical
        Text1.Text = ""
        Text1.SetFocus
        Exit Sub
    End If
    
    Do
        Randomize
        b = 0
        x = x + 1
        For i = 1 To 5
            a(i) = Int(Rnd * 10) + 1
            b = b + a(i)
        Next i
        DoEvents
    Loop Until Val(Text1.Text) = b
    
    MsgBox "Zbir " & a(1) & "+" & a(2) & "+" & a(3) & "+" & a(4) & "+" & a(5) & " = " & b & " jednak je trazenom!" & vbCrLf & "Broj pokusaja: " & x, vbInformation
    Text1.Text = ""
    Text1.SetFocus
    
End Sub
08.05.2007. u 17:30 

zormar

Član broj: 129240
Poruke: 155
*.adsl-1.sezampro.yu.



Profil

icon Re: slucajni izbor brojeva uz uslov08.05.2007. u 20:17
@dennycd2, zahvaljujem ti za ovaj kod.
Nadam se da cu uspeti da ovo prilagodim svojim potrebama.
08.05.2007. u 20:17 

Aleksandar Ružičić
Senior Developer, Haragei d.o.o
Beograd - Čačak

Moderator
Član broj: 26939
Poruke: 2034
82.208.210.*

Jabber: krcko@haragei.com
Sajt: krcko.haragei.org


Profil

icon Re: slucajni izbor brojeva uz uslov08.05.2007. u 21:43
mozda ovako nekako (pisem kod iz glave, tako da su mozda potrebne neke modifikacije da bi proradio):
Code:

Function RandomZbir(sabiraka As Long, zbir As Long) As Long()
  
   Dim sabirak() As Long, i As Long, z As Long, max As Long

   ReDim sabirak(1 to sabiraka)
  
   z = 0
   max = zbir \ 2

   For i = 1 To sabiraka - 1
       sabirak(i) = Int(Rnd * (max - 1)) + 1
       z = z + sabirak(i)
       max = (zbir - z) \ 2
   Next

   sabirak(sabiraka) = zbir - z

   RandomZbir = sabirak

End Function

' ovako koristis funkciju:
Private Sub Command1_Click()
   
   Dim sabirak() As Long, i As Long, s As String

   sabirak = RandomZbir(5, Val(Text1.Text))

   s = CStr(Val(Text1.Text)) & " = "
  
   for i = 1 to 5
     s = s & CStr(Sabirak(i))
     If i < 5 Then s = s & " + "
   Next

  MsgBox s

End Sub

Private Sub Form_Load()
   Randomize Timer ' ovo obavezno pozovi prilikom startovanja programa
End Sub

08.05.2007. u 21:43 

zormar

Član broj: 129240
Poruke: 155
*.adsl-1.sezampro.yu.



Profil

icon Re: slucajni izbor brojeva uz uslov08.05.2007. u 22:47
Resio sam problem, jos jednom zahvaljujem obojici na pomoci.
Ako ne trazim previse zanima me kako bi ovo islo sa rasponom brojeva?
Znaci, da izbaci brojeve ciji je raspon izmedju najveceg i najmanjeg broja upisan u textboxu.
08.05.2007. u 22:47 

dennycd2

Član broj: 127351
Poruke: 54
*.dynamic.sbb.co.yu.



Profil

icon Re: slucajni izbor brojeva uz uslov08.05.2007. u 23:06
@Aleksandar,Veoma mi se dopada tvoje resenje, ali pokusaj sa brojem 6 napr.
08.05.2007. u 23:06 

Aleksandar Ružičić
Senior Developer, Haragei d.o.o
Beograd - Čačak

Moderator
Član broj: 26939
Poruke: 2034
82.208.210.*

Jabber: krcko@haragei.com
Sajt: krcko.haragei.org


Profil

icon Re: slucajni izbor brojeva uz uslov10.05.2007. u 22:26
@dennycd2: u pravu si, nisam mislio na takve slucajeve. mada bi uz malo izmena i to moglo da se sredi, taj kod sam rekoh kucao iz glave, tj nisam ga testirao pre, ali vidi se ideja pa moze lako da se doradi da radi i u takvim situacijama...

@zormar:
za broj u rasponu od min do max koristi sledecu "formulu":
Code:

a = Int(Rnd * (max - min)) + min

10.05.2007. u 22:26 

zormar

Član broj: 129240
Poruke: 155
*.adsl.sezampro.yu.



Profil

icon Re: slucajni izbor brojeva uz uslov15.05.2007. u 13:09
Na koji nacin iz niza 5,10,15,20,25,30,35,40,45,50 slucajnim izborom izdvojiti 3 broja?
15.05.2007. u 13:09 

rgdrajko
Beograd

Član broj: 117734
Poruke: 611
80.93.249.*

Sajt: www.enigmatika.zzl.org


Profil

icon Re: slucajni izbor brojeva uz uslov15.05.2007. u 13:43
Pa slucajan broj od 1 do 10, pa to posle pomnozi sa 5.

slbroj = Int(Rnd * 10 + 1)*5
15.05.2007. u 13:43 

zormar

Član broj: 129240
Poruke: 155
*.adsl.sezampro.yu.



Profil

icon Re: slucajni izbor brojeva uz uslov15.05.2007. u 18:13
@rgdrajko, hvala ti za ovo.
A kako se radi s nizom 1,6,11,16,21,26...?
15.05.2007. u 18:13 

Marko_L
Marko Lošonc
Project Manager, Maxifer d.o.o
Beograd

Moderator
Član broj: 20532
Poruke: 2137
89.216.220.*

Jabber: Marko_L@elitesecurity.org
ICQ: 249407402
Sajt: www.jurassicsoftware.com


Profil

icon Re: slucajni izbor brojeva uz uslov15.05.2007. u 19:34
Slučajani broj od 0 do 10, pa pomnoži sa 5, pa dodaj 1
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca m.
-Piše "Insert disk 3", a jedva sam i ova dva ugurao u drajv
-Postoje samo dve osobe kojima verujem, jedna sam ja, a druga nisi ti
15.05.2007. u 19:34 

goranvuc
Goran Vucicevic
Novi Sad

Moderator
Član broj: 4934
Poruke: 1644
*.dialup.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: slucajni izbor brojeva uz uslov15.05.2007. u 20:42
A evo i opste resenje, za bilo koji niz i bilo koji broj slucajnih clanova tog niza. Za demonstraciju je potreban nov projekat sa jednom formom i jednim CommandButtonom pod imenom "Command1"
Code:

Option Explicit

Private Sub Command1_Click()
   Dim varTestNiz As Variant
   Dim bytBrojClanova As Byte
   Dim strOdgovor As String
   Dim strRezultat As String
   
   'Iniciranje niza (moze se naravno i preuzeti postojeci)
   varTestNiz = Array(1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56)
   
   'Trazi se od korisnika da upise broj clanova koji mu treba
   strOdgovor = InputBox("Upisite koliko zelite slucajnih brojeva:", "Upis broja", "3")
   
   'Proverava se da li je upisan broj izmedju 1 i 255, zbog byte tipa
   If Val(strOdgovor) < 1 Or Val(strOdgovor) > 255 Then
      MsgBox "Morate upisati broj izmedju 1 i 255", vbCritical, "Greska"
      Exit Sub
   End If
   
   'Konverzija upisanog teksta u byte tip
   bytBrojClanova = CByte(strOdgovor)
   
   'Poziv funkcije i spajanje clanova odvojenih zarezom u string
   strRezultat = Join(NizSlucajnihBrojeva(varTestNiz, bytBrojClanova), ", ")
   
   'Prikaz rezultata
   MsgBox "Dobili ste niz slucajnih brojeva: " & strRezultat, vbInformation, "Resenje"
   
End Sub

Public Function NizSlucajnihBrojeva(ByVal varPolazniNiz As Variant, ByVal bytTrazeniBrojClanova As Byte) As Variant
   Dim bytCounter As Byte
   Dim varRezultat As Variant
   Dim intUkupnoClanova As Integer
   
   'Dimenzionisanje niza brojeva koji ce biti rezultat funkcije (u trazenom primeru niz od 3 clana)
   ReDim varRezultat(bytTrazeniBrojClanova - 1)
   
   'Aktiviranje generatora slucajnih brojeva
   Randomize
   
   'Odredjivanje broja clanova niza iz kog se uzimaju brojevi po slucajnom izboru
   intUkupnoClanova = UBound(varPolazniNiz) + 1
   
   'Formiranje rezultujuceg niza u petlji trazeni broj puta
   For bytCounter = 0 To bytTrazeniBrojClanova - 1
      varRezultat(bytCounter) = varPolazniNiz(Int(Rnd * intUkupnoClanova))
   Next
   
   'Prosledjivanje konacnog rezultata funkciji
   NizSlucajnihBrojeva = varRezultat
   
End Function



[Ovu poruku je menjao goranvuc dana 15.05.2007. u 23:31 GMT+1]
vidi GoranVucicevic #28045

www.clickersoftware.com
15.05.2007. u 20:42 

Aleksandar Ružičić
Senior Developer, Haragei d.o.o
Beograd - Čačak

Moderator
Član broj: 26939
Poruke: 2034
82.208.210.*

Jabber: krcko@haragei.com
Sajt: krcko.haragei.org


Profil

icon Re: slucajni izbor brojeva uz uslov16.05.2007. u 10:15
@Goran: sa ovakvim resenjem:
Code:

varRezultat(bytCounter) = varPolazniNiz(Int(Rnd * intUkupnoClanova))

moze da se dogodi da se jedan isti clan niza pojavi vise puta ( > 1) u rezultatu, ukoliko to nije pozeljno (znaci, ako treba samo jedanput da se pojavi bilo koji clan niza u rezultatu) onda bi funkcija trebala da se napise ovako:
Code:

Public Function NizSlucajnihBrojeva(ByVal varPolazniNiz As Variant, ByVal bytTrazeniBrojClanova As Byte) As Variant
   Dim lngCounter As Long
   Dim varRezultat As Variant
   Dim lngLBound As Long
   Dim lngUBound As Long
   Dim lngTemp As Long
   Dim varTemp As Variant
   
   'Dimenzionisanje niza brojeva koji ce biti rezultat funkcije (u trazenom primeru niz od 3 clana)
   ReDim varRezultat(bytTrazeniBrojClanova - 1)
   
   'Aktiviranje generatora slucajnih brojeva
   Randomize Timer  
   ' mada je moj savet da se Randomize pozove samo prilikom startovanja programa jer ako se
   ' poziva svaki put kada se pozove funkcija veca je mogucnost da se slucajni brojevi ponove
  
   ' zapamtimo donju i gornju granicu niza:
   lngLBound = LBound(varPolazniNiz)
   lngUBound = UBound(varPolazniNiz)

   ' "promesamo" polazni niz:
   For lngCounter = lngLBound To lngUBound
        lngTemp = Int(Rnd * (lngUBound - lngLBound)) + lngLBound
        varTemp = varPolazniNiz(lngCounter)
        varPolazniNiz(lngCounter) = varPolazniNiz(lngTemp)
        varPolazniNiz(lngTemp) = varTemp
   Next
   
   'Formiranje rezultujuceg niza u petlji trazeni broj puta
   For lngCounter = lngLBound To lngLBound + bytTrazeniBrojClanova - 1
      varRezultat(lngCounter) = varPolazniNiz(lngLBound + lngCounter)
   Next
   
   'Prosledjivanje konacnog rezultata funkciji
   NizSlucajnihBrojeva = varRezultat
   
End Function

16.05.2007. u 10:15 

zormar

Član broj: 129240
Poruke: 155
212.200.223.*



Profil

icon Re: slucajni izbor brojeva uz uslov16.05.2007. u 13:49
Zahvaljujem svima na pomoci, to je ono sto mi je trebalo.
16.05.2007. u 13:49 

[es] :: Visual Basic 6 :: slucajni izbor brojeva uz uslov

[ Pregleda: 1023 | Odgovora: 13 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.