Prova funzione RND



  • Prova funzione RND
    di Attilio data: 20/10/2012 18:31:46

    con questo passerò alla storia in questo FORUM........allora passo al dunque, dopo aver letto qualcosa sulla rete, ho tirato a mio modo delle somme per un calcolo RND, che, dal mio punto di vista, dovrebbe essere più attendibile del semplice comando usato dalla maggior parte dei programmatori, ho usato delle condizioni basate sugli studi di Geiger e Mueller, basato sulla moltiplicazione dei gas..................da come si evince dallo scripting A, B, D e D sono i vari gas che io ho chiamato con queste lettere, il mio problema è che ogni 10 presente nelle formule va esponenziato alla ^10 alcuni e qualcuno ^9, se inserisco l'esponenziale mi da errore la formula, ho pensato che possa dipendere dal numero elevato che si viene a creare!!!!!!!!............c'è possibilità di inserirlo?............proseguo con il riassunto dello script, R sarebbe la formula del risultato dei vari gas * la data e l'ora del momento, il range a1 dovrebbe essere il numero di partenza di tale RND, in questo, volevo sapere se come è stata scritta la formula int(rnd(r+[a1])*37) sia effettivamente quello che voglio realizzare, sò di non essere stato chiaro, ma chiedete pure, sono a disposizione per delucidazioni in merito
     
    Sub RANDOM()
    Dim i As Integer
            Dim a As Integer
            Dim b As Integer
            Dim c As Integer
            Dim d As Integer
            Dim r As Integer
    
            a = 7 * 10
            b = 4 * 10
    
            c = 1 * 10
            d = 1 * 10
    
            r = a + b - c + d * dateAndTime
    For i = 1 To 19
    [a1] = ""
            volte = ActiveCell.Row
            ActiveCell = Int(rnd(r + [a1]) * 37)
            Cells(volte + 1, 1).Select
            
           Next
    
    End Sub



  • di Vecchio Frac data: 20/10/2012 19:50:58

    Se vuoi esponenziare numeri così alti il problema è solo nel limite dei tipi.
    Gli Integer vanno da -32768 a +32768.
    Ti serve un tipo di dato che contenga molti più numeri.
    Nel tuo caso, il Long andrà bene, perchè serve a maneggiare numeri compresi nell'intervallo fra -2.147.483.648 e 2.147.483.647; quindi dichiara le tue variabili As Long tanto per cominciare.
    Inoltre il segno di elevamento a potenza in VBA non è l'asterisco * ma l'accento circonflesso ^.
    Infine, dateAndTime non è dichiarata e non è assegnata, bene che vada ha valore zero.





  • di Attilio (utente non iscritto) data: 21/10/2012 23:19:49

    Si avevo capito che l'esponenziale va scritto con la freccetta rivolta in alto e la formula è questa a = 7,4 * 10^10, (cmq non viene accettata anche i Dim sono passati da integer ad As Long), e poi siccome mi servono numeri interi, c'è anche una formula che mi porta per essesso o difetto al numero intero, come per le formule di excel?



  • di Vecchio Frac data: 22/10/2012 09:33:47

    7,4 * 10^10 --> 74000000000 (correct!)

    Comunque ricordati di usare il punto, al posto della virgola, nel codice VBA:
    a = 7.4 * 10 ^ 10

    cit. " siccome mi servono numeri interi, c'è anche una formula che mi porta per eccesso o difetto al numero intero "
    --> Vedi Int() e CInt() nella guida (e funzioni correlate che magari ti servono), con tutti i limiti e difetti che hanno queste funzioni