|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
[VB 6.0] Funzione RND
Ciao a tutti.
Ho un banale problema con la funzione RND Posto il frammento di codice in questione: Codice:
Randomize Timer Num(1) = Int((Var(1) * Rnd) + 1) Ho provato anche le altre soluzioni che offre la funzione RND ma, nisba, l'1 non appare mai. Perchè ? e come fare per avere tutti gli 8 numeri ? Grazie
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Io di solito mi creo una Function ... :
Codice:
Public Function RandomIntero(minimo As Long, massimo As Long)
Randomize Timer
RandomIntero = Int(Rnd * massimo) + minimo
End Function
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Anzitutto grazie per la risposta.
L'unica cosa che non avevo ancora provato è usare una funzione, mi sembrava superflua visto che con RND di solito non si hanno problemi. Non sarà perchè ho impostato Option Base = 1 ? Comunque proverò con la funzione come da te gentilmente proposto. Grazie ancora
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
La mia Function, più che sostituire Rnd, ne fa proprio uso. Il fatto che, se vuoi un valore Random tra 1 e 8, il tuo codice ( che non ho analizzato ) non restituisca MAI 1, risiede evidentemente in un errore in quel metodo. Usando la Function, se vuoi randomizzare da 1 a 8 : Codice:
Dim numero As Long numero = RandomIntero (1, 8) |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Ciao,
ho provato a inserire la prima funzione che hai postato, in modulo, mdificando qualche piccola cosa nel corpo del listato ma, l'1 non ne vuol sapere di apparire. Ora provo con il tuo ultimo codice e ti farò sapere Intanto grazie
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
#6 | |
|
Junior Member
Iscritto dal: Nov 2007
Messaggi: 10
|
Quote:
Ultima modifica di Ramac : 24-06-2008 alle 15:12. Motivo: fix |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Il codice seguente scritto su un nuovo Progetto1 funziona anche a me, i numeri appaiono tutti, dall'1 all'8 in tutte le 6 variabili Num(), le 6 variabili Var() sono anch'esse corrette.
Il codice è molto simile per non dire identico a quello incluso nel programma originale. Codice:
Option Explicit
Dim T As Integer
Dim N As Integer
Dim Var(6) As Integer
Dim Num(6) As Integer
-----------------------------------------
Private Sub Command1_Click()
T = 0
Var(1) = 8
Randomize Timer
Do
T = T + 1
Num(1) = Int((Var(1) * Rnd) + 1)
Debug.Print Num(1) ' "Sequenza di numeri corretta, 1>8 "
Loop Until Not T <> 50
End Sub
Codice:
Debug.Print Num(1) & "." & Num(2) & "." & Num(3) & "." & Num(4) & "." & Num(5) & "." & Num(6) Una lista di numeri nella quale appaiono tutti gli 8 numeri (1>8) ma, solo nella 2° 3° 4° 5° 6° variabile Num(). Nella prima "Num(1)" ci sono tutti i numeri escluso l'1. Premetto che i 6 blocchi di codice, a parte i valori assunti dalle variabili sono perfettamente identici. Un vero rompicapo
__________________
Il miglior dialogo è l'intesa Ultima modifica di © Rocky : 25-06-2008 alle 19:42. |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Doppione eliminato
__________________
Il miglior dialogo è l'intesa Ultima modifica di © Rocky : 26-06-2008 alle 04:28. |
|
|
|
|
|
#9 | |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Quote:
visto che non posso scrivere numeri dei quali non conosco a priori il loro valore ? La mia riga di codice è questa: Codice:
Num(1) = Int((Var(1) * Rnd) + 1) nell'esecuzione del programma. Tenendo conto che Var(1) ha ipoteticamente il valore 8, come trasformi la mia riga sopra in ciò che tu dici "Più facile di così..." ? Mi sto spaccando la testa contro il muro e anche gli occhi Grazie ad libitum volte
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Finalmente!!!!!!!!!!!!!
Per correttezza posto la soluzione, ho usato questa funzione inserita nel modulo bas: Codice:
Public Function RandomInt(ByVal Min As Integer, ByVal Max As Integer) As Integer RandomInt = Int(Min + Rnd * (Max - Min + 1)) End Function Codice:
Num(1) = RandomInt(1, Var(1)) Codice:
Num(1) = Int((Var(1) * Rnd) + 1) Un multiringraziamento a tutti gli intervenuti che in un modo o nell'altro sono stati indispensabili ai fini della correzione dell'errore. Grazie MarcoGG
__________________
Il miglior dialogo è l'intesa Ultima modifica di © Rocky : 27-06-2008 alle 04:34. |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Doppione
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Doppione
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:25.




















