Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 13 odgovora
  • 7.296 pregleda

Najnovija ↓

slucajni izbor brojeva uz uslov 07.05.2007. u 20:57 · pre 237 meseci #1
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.
Re: slucajni izbor brojeva uz uslov 08.05.2007. u 18:30 · pre 237 meseci #2
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
Re: slucajni izbor brojeva uz uslov 08.05.2007. u 21:17 · pre 237 meseci #3
@dennycd2, zahvaljujem ti za ovaj kod.
Nadam se da cu uspeti da ovo prilagodim svojim potrebama.
Re: slucajni izbor brojeva uz uslov 08.05.2007. u 22:43 · pre 237 meseci #4
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
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: slucajni izbor brojeva uz uslov 08.05.2007. u 23:47 · pre 237 meseci #5
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.
Re: slucajni izbor brojeva uz uslov 10.05.2007. u 23:26 · pre 237 meseci #7
@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
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: slucajni izbor brojeva uz uslov 15.05.2007. u 14:09 · pre 236 meseci #8
Na koji nacin iz niza 5,10,15,20,25,30,35,40,45,50 slucajnim izborom izdvojiti 3 broja?
Re: slucajni izbor brojeva uz uslov 15.05.2007. u 14:43 · pre 236 meseci #9
Pa slucajan broj od 1 do 10, pa to posle pomnozi sa 5.

slbroj = Int(Rnd * 10 + 1)*5
Potpis
rgdrajko
Re: slucajni izbor brojeva uz uslov 15.05.2007. u 20:34 · pre 236 meseci #11
Slučajani broj od 0 do 10, pa pomnoži sa 5, pa dodaj 1
Potpis
-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
Re: slucajni izbor brojeva uz uslov 15.05.2007. u 21:42 · pre 236 meseci
izmenjeno 1 put, poslednji put goranvuc 15.05.2007. u 23:31
  1. goranvuc15.05.2007. u 23:31zapis iz teksta poruke
#12
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
Re: slucajni izbor brojeva uz uslov 16.05.2007. u 11:15 · pre 236 meseci #13
@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
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme