Italian Random lista nomi

tonyx67

Member
Ciao a tutti sono nuovo del forum e volevo fare una domanda (per il momento) stò creando un'app dove in una label mi deve fare il ciclo random sia di numeri che di nomi,solo con i numeri mi è facile ma inserire anche i nomi no.Cosa potete suggerirmi? Grazie
 

LucaMs

Expert
Licensed User
Longtime User
Non hai specificato se numeri e nomi sono abbinati tra loro.
Se non lo sono, metti tutti i nomi in un List e crei un array (numerico) che fà da indice e "randomizzi" quello.
Se invece sono abbinati, ti conviene usare una Map, che è un elenco di coppie Chiave/Valore; puoi mettere sia come chiavi i numeri o le parole oppure viceversa. Poi, puoi usare ancora un array come ho scritto sopra
 

tonyx67

Member
Ciao Luca grazie della risposta. Si numeri e nomi sono abbinati se mi potresti farmi un esempio grafico te ne sarò grato.(Sai sono all'inizio)
 

LucaMs

Expert
Licensed User
Longtime User
Ciao Luca grazie della risposta. Si numeri e nomi sono abbinati se mi potresti farmi un esempio grafico te ne sarò grato.(Sai sono all'inizio)


Non so esattamente cosa vuoi ottenere.
Se lo scrivi precisamente, ti aiuto meglio.
Intanto, ti faccio un esempio sulle Map, poi se sai creare un array di interi e prendere un numero a caso tra questi...!

B4X:
    ' Notare che sono 2 uomini e 8 donne ma solo per caso :)
    Dim mapNomi As Map
    mapNomi.Initialize
    mapNomi.Put(1, "Tony")
    mapNomi.Put(2, "Luca")
    mapNomi.Put(3, "Anna")
    mapNomi.Put(4, "Maria")
    mapNomi.Put(5, "Luisa")
    mapNomi.Put(6, "Gianna")
    mapNomi.Put(7, "Alessia")
    mapNomi.Put(8, "Susanna")
    mapNomi.Put(9, "Francesca")
    mapNomi.Put(10, "Sonia")

usi

B4X:
Dim Nome as String
Dim NumScelto as Int
NumScelto = Rnd(1,10)
Nome = mapNomi.Get(NumScelto)

Per ottenere sempre un nome diverso, è un pochino più complicato.
Semmai lo aggiungo.

Ciao
 
Last edited:

tonyx67

Member
Grazie per la disponibilità,dunque i nomi come dicevo prima devono fare un ciclo in una label tramite l'evento click di un button
in visual basic avrei fatto "dim c (5) as string" "dim s As new Random
c(1)="maria"
c(2)="tony"
c(3)="pino"
c(4)="100"
c(5)="200"
label1.text=c.(s.next 1 to 5)
e risolvevo il problema,basic4android e abbastanza differente.Comunque spero che sarò stato abbastanza chiaro di ciò che voglio ottenere non tanto per l'applicazione di per se ma in quanto a capire bene i vari passaggi per usare b4a.Grazie tanto ancora
 

Claudio57

Member
Licensed User
Longtime User
Ohhhhh, bravo Luca. Quando fai così sei molto utile al forum, invece quando fai come ieri... t'ammazzerei :)
 

djveleno

Active Member
Licensed User
Longtime User
Non so esattamente cosa vuoi ottenere.
Se lo scrivi precisamente, ti aiuto meglio.
Intanto, ti faccio un esempio sulle Map, poi se sai creare un array di interi e prendere un numero a caso tra questi...!

B4X:
    ' Notare che sono 2 uomini e 8 donne ma solo per caso :)
    Dim mapNomi As Map
    mapNomi.Initialize
    mapNomi.Put(1, "Tony")
    mapNomi.Put(2, "Luca")
    mapNomi.Put(3, "Anna")
    mapNomi.Put(4, "Maria")
    mapNomi.Put(5, "Luisa")
    mapNomi.Put(6, "Gianna")
    mapNomi.Put(7, "Alessia")
    mapNomi.Put(8, "Susanna")
    mapNomi.Put(9, "Francesca")
    mapNomi.Put(10, "Sonia")

usi

B4X:
Dim Nome as String
Dim NumScelto as Int
NumScelto = Rnd(1,10)
Nome = mapNomi.Get(NumScelto)

Per ottenere sempre un nome diverso, è un pochino più complicato.
Semmai lo aggiungo.

Ciao

Per completezza dell'informazione, ma forse già lo sai, quando si usa la funzione RND l'array compresa nelle parentesi è bene aumentarla di una unità in modo da poter far si che anche il numero intero più grande venga randomizzato.

NumScelto = Rnd(1,11)

Ciao Dj
 

LucaMs

Expert
Licensed User
Longtime User
Per completezza dell'informazione, ma forse già lo sai, quando si usa la funzione RND l'array compresa nelle parentesi è bene aumentarla di una unità in modo da poter far si che anche il numero intero più grande venga randomizzato.

NumScelto = Rnd(1,11)

Ciao Dj


L'avrò letto nell'intellisense, visto che l'ho usato, ma ho poca ram (in testa :))
 

tonyx67

Member
Ciao Luca il linguaggio e visual basic 2010 perciò avevo fatto quel mio esempio perche b4a e simile comunque la funzione va bene però cè un'anomalia perche nel ciclo random della lista creata mi esce un "null" gli elementi della lista sono 12 e io ho inserito nel random 1,13.Cosa può essere?Grazie sempre della disponibilità
 

LucaMs

Expert
Licensed User
Longtime User
Ciao Luca il linguaggio e visual basic 2010 perciò avevo fatto quel mio esempio perche b4a e simile comunque la funzione va bene però cè un'anomalia perche nel ciclo random della lista creata mi esce un "null" gli elementi della lista sono 12 e io ho inserito nel random 1,13.Cosa può essere?Grazie sempre della disponibilità

Si interrompe l'app con un errore o ti dà un valore vuoto? Puoi postare quella parte di programma?
 

tonyx67

Member
Ciao allora ti spiego subito la lista sono dei risultati calcistici cioe: 1,2,x,gol,no gol,under,over,1-2,1-x,x-2,pari,dispari,e proprio quest'ulimo cioe il dispari
al posto esce null.Ho controllato durante il ciclo escono tutti tranne il dispari che è all'ultimo posto della lista.
Sub Globals
Dim risultato As Map
Dim scegli As Int
Dim nomi As String
Sub Button1gioca_Click
risultato.Put(1,"1")
risultato.Put(2,"2")
risultato.Put(3,"x")
risultato.Put(4,"1-x")
risultato.Put(5,"1-2")
risultato.Put(6,"x-2")
risultato.Put(7,"Gol")
risultato.Put(8,"No gol")
risultato.Put(9,"Over")
risultato.Put(10,"Under")
risultato.Put(11,"Pari")
risultato.Put(13,"Dispari")
scegli= Rnd(1,13)
nomi=risultato.get(scegli)
Label3.Text=nomi
 

LucaMs

Expert
Licensed User
Longtime User
Hai saltato un numero

B4X:
risultato.Put(10,"Under")
risultato.Put(11,"Pari")
risultato.Put(13,"Dispari") <----- questo dovrebbe essere 12, no?
scegli= Rnd(1,13)
nomi=risultato.get(scegli)

(quando posti del codice, usa l'icona che si trova a sinistra delle virgole, diventa più leggibile)
 
Top