Distribuzione casuale di numeri selezionati



  • Distribuzione casuale di numeri selezionati
    di Migua Ing data: 22/01/2016 12:53:30

    Salve a tutti, vi presento il mio problema e spero che qualcuno di voi mi possa dare una mano perchè non ne vengo più fuori...
    Avendo un Insieme numerico M =1,2,...,1088 ; devo selezionare manualmente un sottoinsieme L= 1,2,...,n e ridistribuire tale sottoinsieme L in X colonne ( ogni colonna deve avere i numeri del sottoinsieme L, ma distribuiti in maniera casuale).



  • Distribuzione casuale di numeri selezionati
    di Migua Ing data: 22/01/2016 12:55:13

    Salve a tutti, vi presento il mio problema e spero che qualcuno di voi mi possa dare una mano perchè non ne vengo più fuori...
    Avendo un Insieme numerico M =1,2,...,1088 ; devo selezionare manualmente un sottoinsieme L= 1,2,...,n e ridistribuire tale sottoinsieme L in X colonne ( ogni colonna deve avere i numeri del sottoinsieme L, ma distribuiti in maniera casuale).




  • di Luca73 data: 22/01/2016 13:32:16

    Ciao
    Quanti sono i numeri dell'insieme M?
    Come selezioni "manualmente"?
    Quanti sono i numeri del sottoinsieme L?
    Come/dove sono sono scritti i numeri di L e M?

    Allega un file, rendi la vita più semplice.
    Ciao
    Luca






  • di Migua Ing data: 22/01/2016 13:51:30

    I numeri dell'insieme M vanno da 1 a 1088 (come scritto in precedenza);
    Selezione manualmente vuol dire che dovrei creare una colonna dove vado a scrivere 20 numeri selezionati ( che vanno da 1 a 1088) in modo tale da creare il sottoinsieme L ( che va da 1 a 20 ).
    Riguardo l'ultima domanda " Come/dove sono sono scritti i numeri di L e M? " : L ed M possono essere scritti in colonne separate.



  • di Migua Ing data: 22/01/2016 14:02:53

    Nel file allegato, si vede la colonna L ( che rappresenta il sottoinsieme di M ) e le colonne P ( che sono le generazioni casuali dei numeri presenti in L). Secondo te, è possibile creare questo meccanismo in VBA,? inserendo come parametri:
    - il numero di componenti del sottoinsieme L
    - selezionare ( se L=20) , venti numeri che fanno parte dell'insieme M ( che va da 1 a 1088).
    - il numero delle colonne P ( dove verranno ridistribuiti in maniera random i venti numeri selezionati precedentemente del sottoinsieme L.



  • di Luca73 data: 22/01/2016 16:00:26

    Ciao
    una considerazione se dovessi chiedere nuovamente aiuto: allegare file per semplificare la vita non equivale ad allegare un immagine dello stesso.

    Ti propongo una piccola macro. la quale ti preleva i valori dalla colonna A righe da 1 a 20 e li mette in riga 1 da colonna D a W

    Ciao
    Luca
     
    Sub RiempiVettoreCasuale()
    Dim Index As Integer
    Dim Posizione  As Integer
    Dim Vettore(1 To 20, 1 To 2)
    Dim InputV(1 To 20)
    
    Dim Index2  As Integer
    Dim Index1  As Integer
    Dim Contatore  As Integer
    Randomize
    For Index = 1 To 20
        Vettore(Index, 1) = Index ' Inizializza la prima componente del vettore con numeri sequenziali
        InputV(Index) = Range("A1").Offset(Index - 1, 0) ' riempi il vettore di origine
    Next Index
    
    For Index1 = 1 To 20
        Posizione = Int(((20 + 1 - Index1) - 1 + 1) * Rnd + 1) ' crea la posizione casuale tra 1 e il numero massimo di celle libere
        Contatore = 1 ' inizializzo il contatore di celle libere
        For Index2 = 1 To 20
            If Vettore(Index2, 1) = Posizione Then ' se siamo alla posizione casuale
                Vettore(Index2, 2) = InputV(Index1) ' inserisco il valore
                Vettore(Index2, 1) = "OK"   'elimino la posizione libera
            ElseIf Vettore(Index2, 1) <> "OK" Then 'se la posizione │ libera
                Vettore(Index2, 1) = Contatore    ' aggiorno il numero di posizione della cella libera
                Contatore = Contatore + 1   ' aggiorno il contatore
            End If
        Next
    Next
            
    For Index = 1 To 20
        Range("b1").Offset(0, Index - 1 + 2) = Vettore(Index, 2) 'scrivo nelle celle il valore
    Next Index
             
            
    
    End Sub
    






  • di Migua Ing data: 22/01/2016 17:10:05

    La macro che hai condiviso è perfetta, era quello che cercavo, Luca sei un grandeeeee!!!!!!
    Premetto che ho attivato la macro con il pulsante ActiveX, quindi ogni volta che schiaccio il pulsante mi genera una distribuzione casuale dei numeri da me inseriti nella colonna A, sovrapponendosi alla riga generata precedentemente.
    Quindi, a fronte di questo fatto vorrei evitare la sovrapposizione e scrivere una nuova riga ogni qualvolta schiaccio il pulsante (in questo caso nel secondo loop andrà a scrivere, sempre dalla colonna D a W ma in riga 2). In modo tale da mantenere le serie generate precedentemente.
    Secondo te, è di facile modifica?
    Ciao.