Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [VB6] Funzione random

  1. #1
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071

    [VB6] Funzione random

    Ho questa parte di programma ma qualunque numero metta il risultato di j=61.... perchè? dove l'errore?

    Ho fatto la prova inserendo il numero 15 Arrivi=250 quindi dovrebbe funzionare :|

    ************************************************** *******************

    Dim Prob As Double
    Dim Arrivi As Integer

    Private Sub Command1_Click()
    Arrivi = (Prob * 1000) / 1000
    Arrivi = (Prob * 1000) - (Arrivi * 1000)

    Randomize
    j = 0
    For i = 0 To 60
    If (Int(Rnd(999)) < Arrivi) Then
    j = j + 1
    End If
    Next i

    Label3.Caption = j

    Private Sub Text1_Change()
    If Text1.Text <> "" Then
    Command1.Enabled = True
    Prob = FormatNumber(Text1.Text / 60, 3)
    Label2.Caption = "Probabilità di un arrivo in 1 minuto (60 secondi): " & Prob
    Else
    Label2.Caption = "Inserire la media di arrivi"
    End If
    End Sub

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    205

    Re: [VB6] Funzione random

    pippo assume sempre il valore 0!!!

    pippo = Int(Rnd(999))

    nel tuo ciclo vuoi che j si incrementi ad ogni passaggio di 1 unità...

    non puoi che ottenere in questo modo sempre il solito risultato! almeno finchè assegni un valore positivo per la variabile arrivi!

    se sposti Label3.Caption prima di chiudere EndIf puoi visualizzare come j si incrementa ad ogni dgiro del for.
    codice:
    ....
    ....
    Randomize
    j = 0
    pippo = Int(Rnd(999))
    For i = 0 To 60
    If (Int(Rnd(999)) < Arrivi) Then
    j = j + 1
    End If
    Label3.Caption = j
    Next i
    ....
    ....


    quindi in conclusione:
    tutto dipende da:

    codice:
    If (Int(Rnd(999)) < Arrivi) Then 
    j = j + 1 
    End If
    dove gli dici che finchè arrivi è > di 0 incrementa j....(quindi per ogni valore....!!!! (Int(Rnd(999)) è sempre = a 0 )


    spero di essermi spiegato bene e di esserti stato utile..

    ciao


    Originariamente inviato da Il Pazzo
    Ho questa parte di programma ma qualunque numero metta il risultato di j=61.... perchè? dove l'errore?

    Ho fatto la prova inserendo il numero 15 Arrivi=250 quindi dovrebbe funzionare :|

    ************************************************** *******************

    Dim Prob As Double
    Dim Arrivi As Integer

    Private Sub Command1_Click()
    Arrivi = (Prob * 1000) / 1000
    Arrivi = (Prob * 1000) - (Arrivi * 1000)

    Randomize
    j = 0
    For i = 0 To 60
    If (Int(Rnd(999)) < Arrivi) Then
    j = j + 1
    End If
    Next i

    Label3.Caption = j

    Private Sub Text1_Change()
    If Text1.Text <> "" Then
    Command1.Enabled = True
    Prob = FormatNumber(Text1.Text / 60, 3)
    Label2.Caption = "Probabilità di un arrivo in 1 minuto (60 secondi): " & Prob
    Else
    Label2.Caption = "Inserire la media di arrivi"
    End If
    End Sub

  3. #3
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Scusa.. come sempre =0...???? Non genero dei numer i da 0 a 999 in quesl modo?? :|

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    205
    no!
    per poter avere numero casuale compreso tra 1 e 999 devi fare una cosa simile:

    codice:
    MyValue = Int((999 * Rnd) + 1)   ' Genera un valore casuale compreso tra 1 e 999.
    nel caso precedente tu ottieni sempre un valore 0 > x < 1 e avendo per di + utilizzato Int() otterrai sempre la parte intera...quindi 0!

    ciao

    Originariamente inviato da Il Pazzo
    Scusa.. come sempre =0...???? Non genero dei numer i da 0 a 999 in quesl modo?? :|

  5. #5
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    205


    Originariamente inviato da Il Pazzo
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.