|
|
|
![]() |
|
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 14: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 18: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 03: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 03: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: 21:37.