Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Programma combinazioni casuali da insiemi con probabilità non uniforme

    Ciao ragazzi...
    sono nuovo di questo forum... volevo chiedere a qualcuno se ha la risposta ad un problema che mi assilla da un po' di giorni...
    mettiamo di avere un insieme di numeri (da 1 a 50 per esempio) con probabilità non-uniforme... piuttosto che usare la gaussiana, poichè non mi interessa un picco, ma un sottoinsieme di questi numeri ho diviso l'insieme totale in sottoinsiemi della stessa dimensione ed ho calcolato a parte le probabilità dei singoli sottoinsiemi... ora mettiamo che abbiamo ottenuto una ventina di sottoinsiemi tutti con lo stesso numero di elementi... le loro probabilità sono ad esempio: 6,75 - 3,0 - 1,84... ecc.
    Ho di conseguenza pensato che siccome le probaabilità che mi escono siano al più con 2 numeri dopo la virgola di moltiplicarle tutte per cento per ottenere solo numeri interi... l'insieme che quindi mi si presenta è molto grande e con molte ripetizioni...
    Mi servirebbe un programma che estragga da questo insieme delle terne di numeri senza ripetizione in modo casuale... come faccio?
    ps: piuttosto che creare un insieme con tutti i numeri (che sono tantissimi da trascrivere e nemmeno mi sembra molto elegante) è possibile crearne uno senza trascrivere tutte le ripetizioni? (ad esempio il numero 41 mettiamo sia presente 344 volte... lo devo per forza scrivere 345 volte quando implemento l'insieme?)

    Grazie mille per la vostra attenzione
    An Apple a day takes Microsoft away...

  2. #2
    ok forse non mi sono spiegato bene... cmq ho creato l'array con tutti i numeri che mi servivano in modo empirico... come faccio a far estrarre dall'array in modo random delle terzine o delle quterne senza ripetizioni??? please help me!
    An Apple a day takes Microsoft away...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    La cosa più semplice e basarsi su shuffle di Collections (se n'è parlato anche in thread recente)

    Per esempio.
    codice:
    import java.util.*;
    public class ShuffleVector {
    
        public static void main (String[] args) {
            Vector v = new Vector();
            for (int i = 0; i < 50; i++) {
                v.add((i+1));
            }
            Collections.shuffle(v);
    
            for (int i = 0; i < 4; i++) {
                System.out.println(v.elementAt(i));
            }
        }
    
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Grazie mille andrea... inoltre però quello che mi premeva era il fatto di prendere i valori da generare da un array già creato da me... però non so come si possa fare... per esempio se l'array è molto grande? ad esempio un array di numeri da 1 a 50 con ripetizioni mettiamo formato da 13.000 elementi...
    in questo caso come faccio?

    per esempio... ero riuscito a fare questo... ma come puoi ben vedere facendolo girare che le ripetizioni capitano lo stesso... e se inserisco l'insieme dei 13.000 numeri tra cui scegliere mi restituisce l'errore "too long code"...+
    che si può fare?

    codice:
    import java.util.*;
    
    public class Prova
    {
        public static void main (String[] args)
        {
            int[] numeri = {  12, 12, 43, 12, 66, 78, 90, 11, 1, 65};
    	    int size = numeri.length;
            
            Random r = new Random ();
    		System.out.print ("Numeri estratti: ");
    
            while (size > 4)
            {
                int idx = r.nextInt (size);
                
    			System.out.print (" " + numeri[idx]);
    
                numeri[idx] = numeri[--size];
            }
        }
    }
    An Apple a day takes Microsoft away...

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ah, fammi vedere se ho ben capito: se uscisse una volta il 12, poi nessuno degli altri "12" dovrebbe più uscire, giusto?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    si esattamente... come si fa? inoltre come si fa se la lista degli elementi è grandissima? tipo 10.000 elementi? mi dice "too long code"
    help!
    An Apple a day takes Microsoft away...

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    per il problema di "lunghezza" non ne ho idea... suppongo sia meglio mettere i tuoi numeri in un file esterno e leggerli da lì
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    e per quanto riguarda le ripetizioni invece? come posso fare?
    An Apple a day takes Microsoft away...

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non è né bello né performante, credo... ma svolge a dovere il compito richiesto
    codice:
    import java.util.*;
    
    /**
     *
     * @author Andrea
     */
    public class ShuffleVector {
    
        public static void main (String[] args) {
    
            int[] numeri = { 12, 12, 43, 12, 66, 78, 90, 11, 1, 65};
            Vector<Integer> v = new Vector<Integer>();
            for (int i = 0; i < numeri.length; i++) {
                v.add(numeri[i]);
            }
            Collections.shuffle(v);
    
            Vector<Integer> l = new Vector<Integer>();
    
            for (int i = 0; i < 4; i++) {
                Integer elem = (v.elementAt(i)).intValue();
                l.add(elem);
                v.removeAll(l);
                System.out.println(elem);
                l.remove(elem);
            }
        }
    }
    trova tu un modo di leggere/caricare i dati nel Vector.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    grazie davvero, sei stato disponibilissimo...
    adesso provo a vedere cosa riesco a fare e poi ti faccio sapere grazieee
    An Apple a day takes Microsoft away...

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.