Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Indice casuale di array bidimensionale

    Sto creando un programmino che, data la definizione, chieda di digitare il vocabolo ad essa associato.
    Ho creato e popolato quindi l'array bidimensionale
    codice:
    String[][] vocabolario = new String [3][2];
    vocabolario [1][1] = "Vocabolo1";
    vocabolario [1][2] = "Definizione1";
    vocabolario [2][1] = "Vocabolo2";
    vocabolario [2][2] = "Definizione2";
    vocabolario [3][1] = "Vocabolo3";
    vocabolario [3][2] = "Definizione3";
    Come fare in modo di ordinare in modo differente e casuale gli elementi bidimensionali dell'array tenendo associati tra di loro vocabolo e rispettiva definizione?
    Parlo di ordinare e non di pescare a random in quanto ovviamente non voglio doppioni.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: Indice casuale di array bidimensionale

    Originariamente inviato da Mike84bs
    Sto creando un programmino che, data la definizione, chieda di digitare il vocabolo ad essa associato.
    Ho creato e popolato quindi l'array bidimensionale
    codice:
    String[][] vocabolario = new String [3][2];
    vocabolario [1][1] = "Vocabolo1";
    vocabolario [1][2] = "Definizione1";
    vocabolario [2][1] = "Vocabolo2";
    vocabolario [2][2] = "Definizione2";
    vocabolario [3][1] = "Vocabolo3";
    vocabolario [3][2] = "Definizione3";
    Come fare in modo di ordinare in modo differente e casuale gli elementi bidimensionali dell'array tenendo associati tra di loro vocabolo e rispettiva definizione?
    Parlo di ordinare e non di pescare a random in quanto ovviamente non voglio doppioni.
    Non ho capito bene cosa tu voglia fora con la tua lista di accoppiate vocabolo/definizione (che significa ordinare in modo differente e casuale?), comunque sarebbe meglio utilizzare una mappa.
    effeffe

  3. #3
    Ciao,
    Se non ho capito male vuoi fare delle estrazioni senza reimbussolamento.
    Potresti crearti una collection come una array list, contenente gli indici dell'array che vuoi estrarre (all'inizio potrebero essere da 0 a n-1).
    Quindi generi un numero random da 0 a (lunghezza_lista - 1)(lista degli indici), prelevando l'elemento alla posizione del numero random generato, dalla lista di appoggio che ti sei creato, ottieni l'indice dell'elemento da estrarre dal tuo arrray di partenza.
    Dalla lista di indici cancelli quell'elemento (rimuovendolo in modo che la lista sia ora di n -1 elementi).
    Procedi allo stesso modo finchè la lista di indici non si svuota.

  4. #4

    Re: Re: Indice casuale di array bidimensionale

    Originariamente inviato da Kaamos
    Non ho capito bene cosa tu voglia fora con la tua lista di accoppiate vocabolo/definizione (che significa ordinare in modo differente e casuale?), comunque sarebbe meglio utilizzare una mappa.
    Significa che ad ogni lancio del programma le definizioni, con i rispettivi vocaboli associati, dovranno essere date in ordine casuale e diverso ogni volta, senza ovviamente ripetersi nella lista.

    Esempio: (d sta per definizione, v per vocabolo)

    Array bidimensionale inizialmente costruito così:
    d1 -> v1 d2 -> v2 d3 -> v3 d4 -> v4 d5 -> v5

    1° lancio del programma potrebbe essere
    d4 -> v4 d1 -> v1 d3 -> v3 d5 -> v5 d2 -> v2

    2° lancio del programma invece ad esempio sarà
    d5 -> v5 d1 -> v1 d4 -> v4 d2 -> v2 d3 -> v3

    Con la classe Collections e usando shuffle si riesce a "disordinare" un array unidimensionale. Ciò che mi serve sapere a questo punto è semplicemente come fare a disordinare un array BIdimensionale, tutto qua.

    P.S. come mai scrivendo qua non mi dà gli spazi doppi?

  5. #5
    Originariamente inviato da Roby.zip
    Ciao,
    Se non ho capito male vuoi fare delle estrazioni senza reimbussolamento.
    Potresti crearti una collection come una array list, contenente gli indici dell'array che vuoi estrarre (all'inizio potrebero essere da 0 a n-1).
    Quindi generi un numero random da 0 a (lunghezza_lista - 1)(lista degli indici), prelevando l'elemento alla posizione del numero random generato, dalla lista di appoggio che ti sei creato, ottieni l'indice dell'elemento da estrarre dal tuo arrray di partenza.
    Dalla lista di indici cancelli quell'elemento (rimuovendolo in modo che la lista sia ora di n -1 elementi).
    Procedi allo stesso modo finchè la lista di indici non si svuota.
    Per cancellare quell'elemento come si dovrebbe fare? Io proprio quello volevo evitare, in quanto l'array avrà 500 elementi e mi pare che il lavoro della macchina in tal caso sarebbe eccessivo.
    Quello che cerco è un metodo che "mescoli" allo stesso modo le coppie di un array bidimensionale.

    Altra cosa: sapresti dirmi la sintassi per inizializzare, contestualmente alla dichiarazione, un array bidimensionale?
    Per l'array unidimensionale int [] numeri = {0,1,2,3,4}; ma per due dimensioni? Grazie

  6. #6
    La rimozione di un elemento è lenta con una arraylist ma con una linkedlist è pressocchè immediata.
    Generare una serie di numeri random è più veloce di generare una permutazione di un array.



    int numeri [][] = {{1,2,3,4},{2,4,6,8},{11,15,19,23}};

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.