Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto!!!

X = Int(((A1 / 120) * Rnd) + A2 / 120) * 120
Y = Int(((B1 / 120) * Rnd) + B2 / 120) * 120
Con questo codice vorrei che X sia un numero qualsiasi multiplo di 120
compreso tra A1 e A2 e che Y sia un numero qualsiasi multiplo di 120
compreso tra B1 e B2
Qualcuno sa dirmi xchè questo codice non mi genera un intervallo di numeri
da me voluti ma spesso genera dei numeri <> dell'intervallo che vorrei?
Ho provato + volte ad avviare il programma che deve generare questi numeri e
mi genera sempre la stessa sequenza...
Come posso fare x avere numeri casuali multipli di 120 e compresi ini un
intervallo dato?
(sono consapevole dell'inutilità di "(A1 / 120)" e simili in questo esempio
ma nel programma mi serve che sia così)
Grazie a tutti in anticipo!!!
Ciao
Ghigo    :-)

> Ghigo:

Devi scrivere da qualche parte, nel codice, PRIMA di quelle
istruzioni,
    Randomize
(Consulta la guida in proposito)
Considera poi che la guida, a proposito di un numero casuale
in un determinato intervallo, propone:
    Int((limitesuperiore - limiteinferiore + 1) * Rnd +
limiteinferiore)
Forse ti puo` aiutare modificare l'esposizione del quesito in
questo modo (e mi limito a X per non toglierti tutto il
divertimento): potresti "estrarre" per mezzo di Rnd un numero
casuale compreso fra A1 e A2 QUINDI "arrotondarlo" a 120. E`
chiaro il concetto?
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

X = Int(((A1 / 120) * Rnd) + A2 / 120) * 120
Y = Int(((B1 / 120) * Rnd) + B2 / 120) * 120
Con questo codice vorrei che X sia un numero qualsiasi multiplo di 120
compreso tra A1 e A2 e che Y sia un numero qualsiasi multiplo di 120
compreso tra B1 e B2
Qualcuno sa dirmi xchè questo codice non mi genera un intervallo di numeri
da me voluti ma spesso genera dei numeri <> dell'intervallo che vorrei?
Ho provato + volte ad avviare il programma che deve generare questi numeri e
mi genera sempre la stessa sequenza...
Come posso fare x avere numeri casuali multipli di 120 e compresi ini un
intervallo dato?
(sono consapevole dell'inutilità di "(A1 / 120)" e simili in questo esempio
ma nel programma mi serve che sia così)
Grazie a tutti in anticipo!!!
Ciao
Ghigo    :-)

 ha scritto nel messaggio
news:OjRv5.2361$0C2....@news.infostrada.it...


 Y= Int((B2 - B1 + 1) / 120 * Rnd + B1 / 120) * 120
Purtroppo per valori limite questo non va bene. Prova a
testare il codice seguente e vedi se fa quello che desideri.
Option Explicit
Sub main()
    Dim A1 As Long
    Dim A2 As Long
    Dim X  As Long
    Randomize
    A1 = 1
    A2 = 241
    X = Estrai120(A1, A2)
    Debug.Print A1; A2; X
    Debug.Print
End Sub
' A1 >    0
' A2 >= 120
'
Function Estrai120( _
  ByVal A1 As Long _
, ByVal A2 As Long)
    A1 = -Int(-(A1 / 120))
    A2 = Int(A2 / 120) - A1 + 1
    Estrai120 = (A1 + Int(A2 * Rnd)) * 120
End Function


Scusa ma non capisco.
Cosa intendi per valori limite?
Se tu vuoi dei mulipli di 120, è scontato a priori che almeno l'estremo
superiore deve essere >=120 e che l'estremo inferiore deve essere>0.
ciao
ugo
Maurizio Borrelli <Please...@To.Newsgroup> wrote in message
8pruev$ari$2...@nslave2.tin.it...


 Se tu vuoi dei mulipli di 120, è scontato a priori che
almeno l'estremo superiore deve essere >=120 e che l'estremo
inferiore deve essere>0.
Fai un test con le coppie:
    1; 120
    120; 240
    1; 241
ecc.
Come mai, anche se per te e` "scontato a priori" che l'estremo
inferiore deve essere > 0, quindi anche "1", con la formula da
te proposta viene estratto lo zero se "1" e` il valore
inferiore?
Come mai, con l'intervallo {1 .. 241}, "240" ha minori
probabilita` di estrazione di "0" (che non dovrebbe neanche
"uscire") e di "120"?
Ovvero: il problema non e` banale.


Grazie a tutti x le risposte che mi avete dato!
Purtroppo sono riuscito a vederle solo ora xchè il mio messaggio (non so
perchè) era nascosto all'interno di un altro thread...
quindi pensavo che la mia connessione o qualcos'altro facesse casini xchè
non riuscivo a vedere i miei messaggi (non a caso ne ho mandati 2 uguali...)
Controllerò subito se i consigli che mi avete dato funzionano nel mio
programma!!!
GRAZIE A TUTTI!
Ciao
Ghigo    :-)




 In caso contrario, appena ho un attimo, penserò a qualcosa
di più sofisticato.
Aspetteremo ma... non e` sufficiente la soluzione da me
proposta?
