[Risolto] Macro per generare N numeri casuali in range speci
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
[Risolto] Macro per generare N numeri casuali in range speci
Salve, purtroppo non sono esperto di programmazione di macro e non credo sia possibile “registrare” la macro che mi servirebbe e che cerco di spiegare:
Ho un foglio di calcolo nel quale indicare in una cella il numero N di passeggeri di un volo (N può variare tra 1 e 189). Una volta inserito il dato N vorrei che tramite un pulsante, che creerò io, fossero generati N numeri casuali compresi tra 1 e 189 per simulare il riempimento dei posti a bordo e che tali numeri fossero inseriti ciascuno nella sua casella [prevederò una colonna con 189 caselle da riempire parzialmente (o interamente nel caso i passeggeri siano proprio 189) con i numeri estratti]. Dovrebbe essere una cosa tipo la tombola in cui i numeri estratti dovrebbero essere inseriti nelle loro posizioni.
Quindi per esempio se N=120 devono essere effettuate 120 estrazioni di numeri tra 1 e 189 cosicché si simuli la distribuzione dei passeggeri a bordo.
Grazie in anticipo
Andrea
Ho un foglio di calcolo nel quale indicare in una cella il numero N di passeggeri di un volo (N può variare tra 1 e 189). Una volta inserito il dato N vorrei che tramite un pulsante, che creerò io, fossero generati N numeri casuali compresi tra 1 e 189 per simulare il riempimento dei posti a bordo e che tali numeri fossero inseriti ciascuno nella sua casella [prevederò una colonna con 189 caselle da riempire parzialmente (o interamente nel caso i passeggeri siano proprio 189) con i numeri estratti]. Dovrebbe essere una cosa tipo la tombola in cui i numeri estratti dovrebbero essere inseriti nelle loro posizioni.
Quindi per esempio se N=120 devono essere effettuate 120 estrazioni di numeri tra 1 e 189 cosicché si simuli la distribuzione dei passeggeri a bordo.
Grazie in anticipo
Andrea
Ultima modifica di Mr.Crocodile il venerdì 6 giugno 2014, 11:41, modificato 2 volte in totale.
Andrea
Re: Macro per generare N numeri casuali in un range specific
allega un piccolo file di esempio con anche il risultato desiderato
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: Macro per generare N numeri casuali in un range specific
Eccolo Come si vede c'è la cella in cui inserire il numero di passeggeri del volo (da 1 a 189) che in questo esempio è 120patel ha scritto:allega un piccolo file di esempio con anche il risultato desiderato
Poi vorrei che la macro generasse quindi 120 numeri casuali tra 1 e 189 (con una sola occorrenza ovviamente per ciascun estratto) e ottenere una x accanto al numero estratto così da conoscere il posto riservato per il singolo passeggero.
In pratica una volta noto il numero N dei passeggeri vorrei simulare un riempimento casuale dei relativi posti a bordo, per questo l'estrazione dei numeri deve essere tra 1 e 189 ma con un numero di estrazioni limitato al numero N di passeggeri effettivi.
Il tutto mi serve per sapere quale posizione (casuale) il singolo passeggero andrà ad occupare all'interno della cabina per motivi di calcolo del baricentro effettivo.
Spero di essere stato chiaro.
Grazie in anticipo dell'eventuale aiuto
Andrea
Andrea
Re: Macro per generare N numeri casuali in un range specific
Ciao prova il file che ti allego
- Allegati
-
- File di Test.ods
- (13.78 KiB) Scaricato 435 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Macro per generare N numeri casuali in un range specific
altra versione senza uso di collection per evitare i duplicati
Codice: Seleziona tutto
option base 1
Sub RandomRange()
Dim i As Integer, j As Integer, temp As Integer, arr(189), first As Integer, last As Integer
Sheet = ThisComponent.Sheets(0)
npax = Sheet.getCellRangeByName("C3").value
last = 189
first = 1
' ------- riempie l'array
For i = first to last
arr(i)=i
Next
' ---------- mescola l'array
For i = last To first Step -1
j = Rnd * (last - first + 1) + first
If j > last Then j = last
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
Next
Sheet.getCellRangeByName("C9:C197").ClearContents(5)
For x = 1 To npax
Sheet.getCellByPosition(2,arr(x)+7).String = "x"
Next x
End Sub-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: Macro per generare N numeri casuali in un range specific
Ringrazio anzitutto entrambi per le soluzione proposte.
Da ragazzino avevo programmato un po' in basic con il vecchio commodore 16 (poi 128) ed allora avevo un manuale che spiegava la sintassi di tutti i comandi disponibili.
Ho notato che ci sono un congruo numero di somiglianze (ovviamente essendo sempre Basic) ma anche comandi che ignoro e dei quali non sono riuscito a trovare una guida completa come mi aspettavo. Probabilmente non sono stato capace di cercare bene.
Per esempio il parametro in parentesi al comando ClearContents non sono stato capace di interpretarlo. ho trovato qui https://wiki.openoffice.org/wiki/IT/Doc ... _Documents ma non descrive i valori che avete utilizzato voi (4 e 5).
Inoltre nella soluzione proposta da patel quale è il motivo di fare il ciclo for invertito anzichè diretto (da first a last)?
Cosa fa il comando
Da ragazzino avevo programmato un po' in basic con il vecchio commodore 16 (poi 128) ed allora avevo un manuale che spiegava la sintassi di tutti i comandi disponibili.
Ho notato che ci sono un congruo numero di somiglianze (ovviamente essendo sempre Basic) ma anche comandi che ignoro e dei quali non sono riuscito a trovare una guida completa come mi aspettavo. Probabilmente non sono stato capace di cercare bene.
Per esempio il parametro in parentesi al comando ClearContents non sono stato capace di interpretarlo. ho trovato qui https://wiki.openoffice.org/wiki/IT/Doc ... _Documents ma non descrive i valori che avete utilizzato voi (4 e 5).
Inoltre nella soluzione proposta da patel quale è il motivo di fare il ciclo for invertito anzichè diretto (da first a last)?
Cosa fa il comando
Codice: Seleziona tutto
option base 1Andrea
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: Macro per generare N numeri casuali in un range specific
Ho trovato:Mr.Crocodile ha scritto: Cosa fa il comandoCodice: Seleziona tutto
option base 1
https://wiki.openoffice.org/wiki/IT/Doc ... ide/Arrays
Andrea

