Fragen zufällig mit random();???

  • 10 Antworten
  • Letztes Antwortdatum
S

Shelly22

Fortgeschrittenes Mitglied
0
Hallo alle zusammen.


Z.B möchte ich 10 oder 20 fragen zufällig auswählen lassen.
Also drücke auf den Button und es kommt zufällig eine frage.

Das Problem ist, wenn ich es mit random() mache etc
dann wiederholt er zu oft nach einander die fragen.
So bekomme ich öfters die gleichen fragen.

Wie kann ich das am besten umsetzten das jede frage 1x dran kommen muss bis sich eine andere wiederholen darf.

Oder erst nach dem 4ten mal oder so wiederholt.
Irgendwie halt. Das nicht immer die gleichen kommen können.


LG
 
Naja, du kannst ja speichern welche schon gefragt wurden und wenn diese bei Random rauskommen eben nochmal random ausführen.
 
Du könntest die Fragen in eine ArrayList<String> speichern, und sie dann beim Durchlaufen löschen.

ArrayList<String> liste = new ArrayList<String>;
liste.add("Frage1");
liste.add("Frage2");
liste.add("Frage3");

und dann in der Schleife mit Random auf den Index der ArrayList zugreifen:
liste.remove(random);

Sorry, habe übersehen dass du jede Frage wieder haben willst :glare:
 
Zuletzt bearbeitet:
Man kann die Fragen zufällig mischen und dann der Reihenfolge nach ausgeben.

Und wenn du durch bist, mischst du neu.
 
Hallo..Ich danke euch allen erstmal.

Wie mache ich das am besten was "DieGoldeneMitte" vorschlagte?

Zurzeit habe ich das so.


Code:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.textlayouttest);

        textView = (TextView)findViewById(R.id.textView);
        imageButton = (ImageButton)findViewById(R.id.imageButton);
        listeTest = getResources().getStringArray(R.array.test);
        testArray = new ArrayList(Arrays.asList(listeTest));

        textView.setText(testArray.get(randomList(0, 72)));
        imageButton.setOnClickListener(this);

    }

    public static int randomList(int min, int max) {
        return (int) (Math.random() * (max - min) + min);

    }


LG
 
Zuletzt bearbeitet:
Es gibt ne methode die Listen shuffeln kann... ich glaube Collections#shuffel() wars, da brauchst du gar nicht viel selbst zu machen ;)

lg. Dagobert
 
Kenne shuffle nicht, aber laut Java ist auch eine Insel:
Beispiel Elemente gehen geordnet in eine Liste hinein und kommen durchgeschüttelt wieder heraus. Das wahllose Vertauschen der Elemente übernimmt Collections.shuffle(). Da shuffle() allgemein auf List-Objekten arbeitet, können wir hier LinkedList-, Vector- und ArrayList-Objekte einsetzen.
Listing 11.11 Shuffle.java, main()

List<String> v = new ArrayList<String>();
Collections.addAll( v, "Bube", "Dame", "König", "Ass" );
Collections.shuffle( v );
System.out.println( v ); // z. B. [König, Ass, Bube, Dame]
Das möchte er ja nicht. Wenn er zum Beispiel 10 Elemente hat, möchte er ja nach dem 4ten Durchgang wieder alle drin haben.. Sonst ist ja auch wieder vorhersehbar welches als letztes kommt.. Zum Beispiel :)

Gruß

€dit:
Naja, halb richtig, was ich schrieb. Kannst ja schafflen (egal wieviele elemente) und dann immer nur die ersten 4 ausgeben. Danach wieder Shufflen...
 
Hallo.

Habe versucht das mit dem Shuffle und meinen was ich hier
gepostet habe, zu kombinieren.
Leider funktioniert das nicht so ganz.


LG
 
Was heißt es funktioniert nicht ganz zzzzZzzzzzzzzZZZ?

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
Naja wie oben mein Code gezeigt habe, habe ich das nur so bisschen geändert.
Anders geht es wohl nicht.

Code:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.textlayoutwahrheit);

        textView = (TextView)findViewById(R.id.textView);
        imageButton = (ImageButton)findViewById(R.id.imageButton);
        listeTest = getResources().getStringArray(R.array.test);
        testArray = new ArrayList(Arrays.asList(listeTest));

        Collections.shuffle(testArray);

        textView.setText(testArray.get(randomList(0, 72)));
        imageButton.setOnClickListener(this);

    }

    public static int randomList(int min, int max) {
        return (int) (Math.random() * (max - min) + min);

    }


LG
 
Öhm?
Wieso rufst du weiterhin randomList auf?
Befasse dich mal intensiv mit dem shuffle... dann debuge und schaue was passiert.
Nicht einfach den Code hinrotzen und sagen "es funktioniert nicht"

Gruß
 
Zurück
Oben Unten