Pallottoliere pesca di beneficienza

Ravafra

Nuovo Utente
18
0
Buongiorno a tutti,
scriverò un papiro (lo premetto), ma almeno mi spiego per bene.

Sto creando una applicazione molto semplice, una specie di pallottoliere / bussolotto, per una associazione di volontariato.
L'obiettivo è quello di avere un'app super semplice, con 3 pulsanti e 3 textview.

Al click del primo pulsante, si valorizza la prima textview con un numero.
Al click del secondo pulsante, si valorizza la seconda textview con un numero.
Al click del terzo pulsante, si valorizza la terza textview con un numero.
Molto semplice.

Il primo numero, deve essere un numero "estratto" in un elenco di 100 numeri, il secondo in un elenco di 200, il terzo di 300.
Generare un numero casuale non è certamente un problema.

L'obiettivo però è quello di gestire i singoli elenchi di numeri come se fossero numeri di una tombola, quindi senza ripetizione.

Questo perchè? Fino allo scorso anno, alla pesca di beneficienza dell'associazione in questione, facevamo pescare un biglietto con un numero univoco da una cesta. Quest'anno per le normative covid non è più possibile farlo. Quindi stavo cercando di ingegnarmi in questa cosa. Però non sono in grado, o meglio, non saprei come gestire l'estrazione univoca di numeri da un elenco (fatto per il primo, si replica in fretta per il secondo e il terzo).

Sono alla ricerca di idee e aiuti, sono certo che saprete aiutarmi.

Il top sarebbe avere pure un tasto "reset" che possa svuotare il tabellone dei numeri usciti, ovviamente, come se ricominciasse tutto da capo, un po' come una nuova partita a tombola.

Spero di essermi spiegato al meglio
:roll:


Vi ringrazio anticipatamente!
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,407
11,483
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
Ciao deve essere senza dubbio qualcosa di clouding perchè va fatto online tutti devono comunicare in tempo reale i 3 numeri estratti.
La cosa piu semplice sarebbe avere una struttura dati online ad esempio:
- Array 1 (da 1 a 100)
- Array 2 (da 101 a 200)
- Array 3 (da 201 a 300)

Una volta che la persona estrae e comunica i numeri estratti vengono eliminati da tali array, e rimangono degli array equivalenti senza quei numeri.

Io te la sto raccontando breve, ma ci vuole molto lavoro dietro, tra cui senza dubbio un db per salvare cio che fanno gli utenti (ovvero le loro estrazioni)
 
  • Mi piace
Reazioni: Ravafra

Ravafra

Nuovo Utente
18
0
Perchè "gli utenti"?
Alla fine il tablet sarà uno solo.
Arriva il bambino, pigia il pulsante, viene generato il numero, fine.

Nulla di "cloud". Io pensavo piuttosto a dei file in cui salvare l'elenco di numeri ancora "estraibili".
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,407
11,483
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
cioè fammi capire siete tutti nella stessa stanza e tutti usate lo stesso tablet?
allora cosi è piu semplice.
Fai 3 array, una volta estratti fai invia, sull'invio elimini i 3 numeri random usciti in precedenza.
Magari fai una label dove fai salvare il nome, e crei un file coi suoi numeri, o ancora meglio usi SQL lite che in Android è già compreso e salvi tutto su un sql locale
 

Ravafra

Nuovo Utente
18
0
cioè fammi capire siete tutti nella stessa stanza e tutti usate lo stesso tablet?
allora cosi è piu semplice.
Fai 3 array, una volta estratti fai invia, sull'invio elimini i 3 numeri random usciti in precedenza.
Magari fai una label dove fai salvare il nome, e crei un file coi suoi numeri, o ancora meglio usi SQL lite che in Android è già compreso e salvi tutto su un sql locale
Sì, esatto.
Un tablet, un app. Nessuna connessione.
Lo scenario è questo: arriva il bimbo, igienizza le mani, pigia sul pulsante, esce il numero, gli viene dato il "premio " corrispettivo.
Molto semplicemente.

Anche io avevo pensato a SQL. Che uso tutti i santi giorni per lavoro, ma mai in Android.
Salvo tutto in una bella tabellina custom, ed elimino la riga ogni qualvolta genero un numero. Potrebbe essere un'idea.
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,407
11,483
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
  • Mi piace
Reazioni: Ravafra

Krona

Nuovo Utente
69
36
Se non vado errato esiste un servizio online che ho visto usare molte volte, mi pare sia https://www.random.org/, prova se fa al caso tuo. Altrimenti con una ricerca online dovresti trovare una soluzione web già pronta.
 

Andretti60

Utente Èlite
6,440
5,091
Scusa ma non è molto chiaro.
Dici che i numeri venivano estratti da una cesta, mentre questa app dovrebbe avere estrazioni tra tre liste diverse.
 

Ravafra

Nuovo Utente
18
0
Scusa ma non è molto chiaro.
Dici che i numeri venivano estratti da una cesta, mentre questa app dovrebbe avere estrazioni tra tre liste diverse.
Hai ragione. Mea culpa, mi son spiegato male. Le "ceste" erano 3, con 3 colori diversi di biglietti. La cesta 1 conteneva 100 biglietti, la certa 2 200 biglietti, la cesta 3 300 biglietti. Ogni cesta conteneva biglietti con numeri a partire da 1.
 

Andretti60

Utente Èlite
6,440
5,091
Ok, quindi sono tre liste indipendenti.
Ci sono svariati metodi per implementare una cosa del genere, io userei una lista (tre liste in tutto quindi ma il discorso è lo stesso) in cui all’inizio metti i numeri da 1 a N in ordine casuale. Quando si pigia il tasto, il primo numero viene estratto (e quindi rimosso) dalla lista corrispondente al pulsante.
 
  • Mi piace
Reazioni: Ravafra

BAT

Moderatore
Staff Forum
Utente Èlite
22,900
11,551
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Ci vogliono pochi secondi per fare una cosa del genere, te lo schematizzo con 1 array da 100 elementi;
  1. costruisci un array ordinato con i numeri da 1 a 100, un semplice ciclo for
  2. estrai 2 numeri interi casuali compresi tra 0 e 99 (sono gli indici classici di una array a 100 elementi) e scambi i 2 numeri corrispondenti alle posizioni estratte
  3. ripeti il punto 2 per 50-70 volte: significa aver fatto 50-70 scambi pseudocasuali (sono perfino troppi) per cui l'array è come se fosse "mischiato";
  4. a questo punto non c'è bisogno di estrarre nulla: il primo bambino che pigai il tasto "estrae" il primo numero, il secondo bambino estrae il numero in seconda posizione e così via.
La casualità è assicurata dal fatto che hai mischiato in anticipo l'array; la NON ripetizione dei numeri estartti è assicurata dal fatto che i bambini prendono un numero dietro l'altro (tutti diversi) tra quelli mischiati.
NOTA: l'array va creato ordinato e mischiato dopo, perché se generi numeri direttamente pseudocasuali da inserire nell'array, ogni volta dovresti controllare di non aver generato un n. pseudocasuale già generato in precedenza

P.S.
stesso procedimento per array con numeri da 1 a 200 e da 1 a 300.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!