Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [c#]Random da list<>

  1. #1

    [c#]Random da list<>

    Salve a tutti!
    ho un piccolo problemino nell'estrarre o ordinare una list<> in modalità random.

    mi spiego meglio:
    io ho ad esempio, una list<char> del tipo
    list[0] A
    list[1] B
    list[2] C

    ecc. ecc..

    ora avrei bisogno che questa lista venisse organizzata in modalità random.
    l'output dovrebbe essere qualcosa del tipo ACB e ogni volta che la richiamo, deve ritornare fuori random del tipo CAB BAC CAB ABC ec.. ec...

    inizialmente avevo pensato di fare una cosa del genere:

    codice:
    random numero = new random();
    list[numero.next(0, numero.count)];
    in modo che l'estrazione avvenga in modalità random.
    in questo caso pero il problema è che ci sono ripetizioni in quanto la classe random non controlla la ripetizione.

    voi come fareste?
    idee? critiche? suggerimenti? tutto è ben accetto!!!

    Grazie
    ..::Gentoo powered::..

  2. #2
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Ciao, la lista originaria ha tutti elementi diversi o può avere anche elementi uguali?
    Se ha tutti elementi diversi potresti crearti una lista di appoggio in cui, di volta in volta, vai a mettere gli elementi della lista originaria solo se essi non sono ancora presenti.
    Crestron Control Systems and AMX Control Systems Programmer

  3. #3
    la lista è di tipo int.

    e ha i numeri da 1 a 40.

    la cosa ideale sarebbe quella di avere la lista con questi 40 numeri gia randomizzata.
    ..::Gentoo powered::..

  4. #4
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Quindi in questo caso, avendo una lista di elementi tutti diversi, puoi farti una funzione a cui passi la lista originaria e che ti ritorna la lista con gli elementi in modalità random.
    Una cosa di questo genere potrebbe fare al tuo caso:
    codice:
    List<int> crea_random_list(List<int> list)
    {
        Random r = new Random();
        List<int> random_list = new List<int>();
        int n;
        while (list.Count != random_list.Count)
        {
            n = r.Next(list.Count);
            if (!random_list.Contains(list[n]))
                random_list.Add(list[n]);
        }
        return random_list;
    }
    Crestron Control Systems and AMX Control Systems Programmer

  5. #5
    Grande!!!

    Semplice e veloce
    grazie mille della pronta risposta
    ..::Gentoo powered::..

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.