Mostra notizie nelle discussioni
  • Avatar
    Scritto da
    Non Autenticato
    il 2010-03-29 21:16:00.0 alle 2010-03-29 21:16:00.0
    Estrazione errata da un array
    Il metodo esposto in
    http://insulae.net/pub/estrazione.pdf
    (versione più recente)
    è teoricamente corretto, ma in pratica può dare dei problemi.

    Ad esempio, supponiamo che le tre probabilità siano 1/3, 1/3, 1/3. In tal caso, usando un numero finito d di cifre decimali, saranno rappresentate da

    0,333333...33333
    0,333333...33333
    0,333333...33333

    la cui somma dà

    0,999999...99999

    Che fare del caso escluso, la cui probabilità è

    0,000000...00001

    molto piccola ma corrispondente, nel caso di molte estrazioni, a un numero di elementi estratti diverso da zero? Che fare di quegli elementi estratti?

    È corretto assegnarli a caso, di volta in volta, a uno degli altri tre casi?
    E nel caso generale?

    In lacrime sassofono, illuminaci.
    • Avatar
      ☺
      Scritto da
      il 2010-03-29 21:22:00.0 alle 2010-03-29 21:22:00.0
      Trollate totali: 5425
      Re: Estrazione errata da un array
      - Scritto da:
      > Il metodo esposto in
      > http://insulae.net/pub/estrazione.pdf
      > (versione più recente)
      > è teoricamente corretto, ma in pratica può dare
      > dei
      > problemi.
      >
      > Ad esempio, supponiamo che le tre probabilità
      > siano 1/3, 1/3, 1/3. In tal caso, usando un
      > numero finito d di cifre decimali, saranno
      > rappresentate
      > da
      >
      > 0,333333...33333
      > 0,333333...33333
      > 0,333333...33333
      >
      > la cui somma dà
      >
      > 0,999999...99999
      >
      > Che fare del caso escluso, la cui probabilità è
      >
      > 0,000000...00001
      >
      > molto piccola ma corrispondente, nel caso di
      > molte estrazioni, a un numero di elementi
      > estratti diverso da zero? Che fare di quegli
      > elementi
      > estratti?
      >
      > È corretto assegnarli a caso, di volta in volta,
      > a uno degli altri tre
      > casi?
      > E nel caso generale?
      >
      > In lacrime sassofono, illuminaci.

      Irrilevante. Stiamo parlando di estrazioni casuali, non di dividere una torta con il massimo della precisione. Per quanto tu possa inventarti un algoritmo molto buono DIFFICILMENTE alla fine delle estrazioni (dopo milioni e milioni di estrazioni) avrai esattamente 1/3 1/3 1/3, tuttalpiù avrai qualcosa che ci si avvicina.
      -----------------------------------------------------------
      Modificato dall' autore il 29 marzo 2010 21.27
      -----------------------------------------------------------
      • Avatar
        Scritto da
        Non Autenticato
        il 2010-03-29 22:06:00.0 alle 2010-03-29 22:06:00.0
        Re: Estrazione errata da un array
        > > Il metodo esposto in
        > > http://insulae.net/pub/estrazione.pdf
        > > (versione più recente)
        > > è teoricamente corretto, ma in pratica può dare
        > > dei problemi.
        > >
        > > Ad esempio, supponiamo che le tre probabilità
        > > siano 1/3, 1/3, 1/3. In tal caso, usando un
        > > numero finito d di cifre decimali, saranno
        > > rappresentate
        > > da
        > >
        > > 0,333333...33333
        > > 0,333333...33333
        > > 0,333333...33333
        > >
        > > la cui somma dà
        > >
        > > 0,999999...99999
        > >
        > > Che fare del caso escluso, la cui probabilità è
        > >
        > > 0,000000...00001
        > >
        > > molto piccola ma corrispondente, nel caso di
        > > molte estrazioni, a un numero di elementi
        > > estratti diverso da zero? Che fare di quegli
        > > elementi
        > > estratti?
        > >
        > > È corretto assegnarli a caso, di volta in volta,
        > > a uno degli altri tre
        > > casi?
        > > E nel caso generale?
        > >
        > > In lacrime sassofono, illuminaci.
        >
        > Irrilevante. Stiamo parlando di estrazioni
        > casuali, non di dividere una torta con il massimo
        > della precisione. Per quanto tu possa inventarti
        > un algoritmo molto buono DIFFICILMENTE alla fine
        > delle estrazioni (dopo milioni e milioni di
        > estrazioni) avrai esattamente 1/3 1/3 1/3,
        > tuttalpiù avrai qualcosa che ci si
        > avvicina.

        È vero ma questo difettuccio introduce un 'bias'.
        • Avatar
          ☺
          Scritto da
          il 2010-03-29 23:01:00.0 alle 2010-03-29 23:01:00.0
          Trollate totali: 5425
          Re: Estrazione errata da un array

          - Scritto da:
          > > > Il metodo esposto in
          > > > http://insulae.net/pub/estrazione.pdf
          > > > (versione più recente)
          > > > è teoricamente corretto, ma in pratica può
          > dare
          > > > dei problemi.
          > > >
          > > > Ad esempio, supponiamo che le tre probabilità
          > > > siano 1/3, 1/3, 1/3. In tal caso, usando un
          > > > numero finito d di cifre decimali, saranno
          > > > rappresentate
          > > > da
          > > >
          > > > 0,333333...33333
          > > > 0,333333...33333
          > > > 0,333333...33333
          > > >
          > > > la cui somma dà
          > > >
          > > > 0,999999...99999
          > > >
          > > > Che fare del caso escluso, la cui probabilità
          > è
          > > >
          > > > 0,000000...00001
          > > >
          > > > molto piccola ma corrispondente, nel caso di
          > > > molte estrazioni, a un numero di elementi
          > > > estratti diverso da zero? Che fare di quegli
          > > > elementi
          > > > estratti?
          > > >
          > > > È corretto assegnarli a caso, di volta in
          > volta,
          > > > a uno degli altri tre
          > > > casi?
          > > > E nel caso generale?
          > > >
          > > > In lacrime sassofono, illuminaci.
          > >
          > > Irrilevante. Stiamo parlando di estrazioni
          > > casuali, non di dividere una torta con il
          > massimo
          > > della precisione. Per quanto tu possa inventarti
          > > un algoritmo molto buono DIFFICILMENTE alla fine
          > > delle estrazioni (dopo milioni e milioni di
          > > estrazioni) avrai esattamente 1/3 1/3 1/3,
          > > tuttalpiù avrai qualcosa che ci si
          > > avvicina.
          >
          > È vero ma questo difettuccio introduce un 'bias'.

          Infinitesimale, quindi inesistente.
          • Avatar
            Scritto da
            Non Autenticato
            il 2010-03-29 23:08:00.0 alle 2010-03-29 23:08:00.0
            Re: Estrazione errata da un array
            > > > > Il metodo esposto in
            > > > > http://insulae.net/pub/estrazione.pdf
            > > > > (versione più recente)
            > > > > è teoricamente corretto, ma in pratica può
            > > dare
            > > > > dei problemi.
            > > > >
            > > > > Ad esempio, supponiamo che le tre
            > probabilità
            > > > > siano 1/3, 1/3, 1/3. In tal caso, usando un
            > > > > numero finito d di cifre decimali, saranno
            > > > > rappresentate
            > > > > da
            > > > >
            > > > > 0,333333...33333
            > > > > 0,333333...33333
            > > > > 0,333333...33333
            > > > >
            > > > > la cui somma dà
            > > > >
            > > > > 0,999999...99999
            > > > >
            > > > > Che fare del caso escluso, la cui
            > probabilità
            > > è
            > > > >
            > > > > 0,000000...00001
            > > > >
            > > > > molto piccola ma corrispondente, nel caso di
            > > > > molte estrazioni, a un numero di elementi
            > > > > estratti diverso da zero? Che fare di quegli
            > > > > elementi
            > > > > estratti?
            > > > >
            > > > > È corretto assegnarli a caso, di volta in
            > > volta,
            > > > > a uno degli altri tre
            > > > > casi?
            > > > > E nel caso generale?
            > > > >
            > > > > In lacrime sassofono, illuminaci.
            > > >
            > > > Irrilevante. Stiamo parlando di estrazioni
            > > > casuali, non di dividere una torta con il
            > > massimo
            > > > della precisione. Per quanto tu possa
            > inventarti
            > > > un algoritmo molto buono DIFFICILMENTE alla
            > fine
            > > > delle estrazioni (dopo milioni e milioni di
            > > > estrazioni) avrai esattamente 1/3 1/3 1/3,
            > > > tuttalpiù avrai qualcosa che ci si
            > > > avvicina.
            > >
            > > È vero ma questo difettuccio introduce un
            > 'bias'.
            >
            > Infinitesimale, quindi inesistente.

            Non è infinitesimale, perché i calcolatori fanno i calcoli con un numero finito di cifre e

            0,000...0001 è piccolo ma non nullo.
            • Avatar
              ☺
              Scritto da
              avvelentani
              Cubicolario
              il 2010-03-30 06:54:00.0 alle 2010-03-30 06:54:00.0
              Trollate totali: 18184
              Re: Estrazione errata da un array

              - Scritto da:
              > > > > > Il metodo esposto in
              > > > > > http://insulae.net/pub/estrazione.pdf
              > > > > > (versione più recente)
              > > > > > è teoricamente corretto, ma in pratica può
              > > > dare
              > > > > > dei problemi.
              > > > > >
              > > > > > Ad esempio, supponiamo che le tre
              > > probabilità
              > > > > > siano 1/3, 1/3, 1/3. In tal caso, usando
              > un
              > > > > > numero finito d di cifre decimali, saranno
              > > > > > rappresentate
              > > > > > da
              > > > > >
              > > > > > 0,333333...33333
              > > > > > 0,333333...33333
              > > > > > 0,333333...33333
              > > > > >
              > > > > > la cui somma dà
              > > > > >
              > > > > > 0,999999...99999
              > > > > >
              > > > > > Che fare del caso escluso, la cui
              > > probabilità
              > > > è
              > > > > >
              > > > > > 0,000000...00001
              > > > > >
              > > > > > molto piccola ma corrispondente, nel caso
              > di
              > > > > > molte estrazioni, a un numero di elementi
              > > > > > estratti diverso da zero? Che fare di
              > quegli
              > > > > > elementi
              > > > > > estratti?
              > > > > >
              > > > > > È corretto assegnarli a caso, di volta in
              > > > volta,
              > > > > > a uno degli altri tre
              > > > > > casi?
              > > > > > E nel caso generale?
              > > > > >
              > > > > > In lacrime sassofono, illuminaci.
              > > > >
              > > > > Irrilevante. Stiamo parlando di estrazioni
              > > > > casuali, non di dividere una torta con il
              > > > massimo
              > > > > della precisione. Per quanto tu possa
              > > inventarti
              > > > > un algoritmo molto buono DIFFICILMENTE alla
              > > fine
              > > > > delle estrazioni (dopo milioni e milioni di
              > > > > estrazioni) avrai esattamente 1/3 1/3 1/3,
              > > > > tuttalpiù avrai qualcosa che ci si
              > > > > avvicina.
              > > >
              > > > È vero ma questo difettuccio introduce un
              > > 'bias'.
              > >
              > > Infinitesimale, quindi inesistente.
              >
              > Non è infinitesimale, perché i calcolatori fanno
              > i calcoli con un numero finito di cifre
              > e
              >
              > 0,000...0001 è piccolo ma non nullo.

              cambia base. poi parliamo di sqrt(2).
              I think happiness is love
              - Vladimir Putin
              • Avatar
                Scritto da
                Non Autenticato
                il 2010-03-30 12:50:00.0 alle 2010-03-30 12:50:00.0
                Re: Estrazione errata da un array
                > cambia base. poi parliamo di sqrt(2).

                Esiste una base in cui qualsiasi numero ha una rappresentazione con un numero finito di cifre decimali?

                E in ogni caso dal lato pratico a me serve del codice che si possa scrivere anche in PHP In lacrime

                Perché ogni volta che prendo in mano un uovo ne cavo peli su peli? In lacrime
                • Avatar
                  ☺
                  Scritto da
                  avvelentani
                  Cubicolario
                  il 2010-03-30 15:31:00.0 alle 2010-03-30 15:31:00.0
                  Trollate totali: 18184
                  Re: Estrazione errata da un array

                  - Scritto da:
                  > > cambia base. poi parliamo di sqrt(2).
                  >
                  > Esiste una base in cui qualsiasi numero ha una
                  > rappresentazione con un numero finito di cifre
                  > decimali?

                  ovviamente no. ma tu qui stai parlando di probabilita`, le probabilita` di solito vengono da delle frequenze, quindi di solito la scelta giusta e` rappresentare direttamente le frequenze (btw i numeri floating point sono in base 2 quindi non e` solo 1/3 a non avere rappresentazione finita, anche 1/5)
                  I think happiness is love
                  - Vladimir Putin
                  • Avatar
                    Scritto da
                    Non Autenticato
                    il 2010-03-30 15:52:00.0 alle 2010-03-30 15:52:00.0
                    Re: Estrazione errata da un array
                    > > > cambia base. poi parliamo di sqrt(2).
                    > >
                    > > Esiste una base in cui qualsiasi numero ha una
                    > > rappresentazione con un numero finito di cifre
                    > > decimali?
                    >
                    > ovviamente no. ma tu qui stai parlando di
                    > probabilita`, le probabilita` di solito vengono
                    > da delle frequenze, quindi di solito la scelta
                    > giusta e` rappresentare direttamente le frequenze

                    Infatti il metodo esposto nel PDF si basa su questo: in pratica le probabilità saranno date, sotto forma di numeri con un certo numero di cifre decimali, la cui somma darà uno.

                    Ma le probabilità secondo la teoria classica corrispondono a rapporti fra casi favorevoli e casi possibili: quindi in certi tipi di problemi le probabilità saranno frazioni, ed ecco che saltano fuori numeri come 1/3, 2/5...

                    > (btw i numeri floating point sono in base 2
                    > quindi non e` solo 1/3 a non avere
                    > rappresentazione finita, anche 1/5)

                    Sono INFINITI In lacrime

                    Urge una soluzione, sto aspettando che il mio cervello faccia KA-RANK!
    • Avatar
      ☺
      Scritto da
      il 2010-03-29 21:34:00.0 alle 2010-03-29 21:34:00.0
      Trollate totali: 2013
      Re: Estrazione errata da un array

      - Scritto da:
      > Il metodo esposto in
      > http://insulae.net/pub/estrazione.pdf
      > (versione più recente)
      > è teoricamente corretto, ma in pratica può dare
      > dei
      > problemi.
      >
      > Ad esempio, supponiamo che le tre probabilità
      > siano 1/3, 1/3, 1/3. In tal caso, usando un
      > numero finito d di cifre decimali, saranno
      > rappresentate
      > da
      >
      > 0,333333...33333
      > 0,333333...33333
      > 0,333333...33333
      >
      > la cui somma dà
      >
      > 0,999999...99999
      >
      > Che fare del caso escluso, la cui probabilità è
      >
      > 0,000000...00001
      >
      > molto piccola ma corrispondente, nel caso di
      > molte estrazioni, a un numero di elementi
      > estratti diverso da zero? Che fare di quegli
      > elementi
      > estratti?
      >
      > È corretto assegnarli a caso, di volta in volta,
      > a uno degli altri tre
      > casi?
      > E nel caso generale?
      >
      > In lacrime sassofono, illuminaci.

      Hai un belink alla prima discussione?
      • Avatar
        Scritto da
        Non Autenticato
        il 2010-03-29 22:08:00.0 alle 2010-03-29 22:08:00.0
        Re: Estrazione errata da un array
        > > Il metodo esposto in
        > > http://insulae.net/pub/estrazione.pdf
        > > (versione più recente)
        > > è teoricamente corretto, ma in pratica può dare
        > > dei
        > > problemi.
        > >
        > > Ad esempio, supponiamo che le tre probabilità
        > > siano 1/3, 1/3, 1/3. In tal caso, usando un
        > > numero finito d di cifre decimali, saranno
        > > rappresentate
        > > da
        > >
        > > 0,333333...33333
        > > 0,333333...33333
        > > 0,333333...33333
        > >
        > > la cui somma dà
        > >
        > > 0,999999...99999
        > >
        > > Che fare del caso escluso, la cui probabilità è
        > >
        > > 0,000000...00001
        > >
        > > molto piccola ma corrispondente, nel caso di
        > > molte estrazioni, a un numero di elementi
        > > estratti diverso da zero? Che fare di quegli
        > > elementi
        > > estratti?
        > >
        > > È corretto assegnarli a caso, di volta in volta,
        > > a uno degli altri tre
        > > casi?
        > > E nel caso generale?
        > >
        > > In lacrime sassofono, illuminaci.
        >
        > Hai un belink alla prima discussione?

        http://www.forumdeitroll.it/m.aspx?m_id=2480815
        http://www.forumdeitroll.it/m.aspx?m_id=2481564&m_...

        ma il PDF contiene un'esposizione più sintetica.
      • Avatar
        ☺
        Scritto da
        il 2010-03-29 22:14:00.0 alle 2010-03-29 22:14:00.0
        Trollate totali: 2013
        Re: Estrazione errata da un array

        - Scritto da: suoranciata
        >
        > - Scritto da:
        > > Il metodo esposto in
        > > http://insulae.net/pub/estrazione.pdf
        > > (versione più recente)
        > > è teoricamente corretto, ma in pratica può dare
        > > dei
        > > problemi.
        > >
        > > Ad esempio, supponiamo che le tre probabilità
        > > siano 1/3, 1/3, 1/3. In tal caso, usando un
        > > numero finito d di cifre decimali, saranno
        > > rappresentate
        > > da
        > >
        > > 0,333333...33333
        > > 0,333333...33333
        > > 0,333333...33333
        > >
        > > la cui somma dà
        > >
        > > 0,999999...99999
        > >
        > > Che fare del caso escluso, la cui probabilità è
        > >
        > > 0,000000...00001
        > >
        > > molto piccola ma corrispondente, nel caso di
        > > molte estrazioni, a un numero di elementi
        > > estratti diverso da zero? Che fare di quegli
        > > elementi
        > > estratti?
        > >
        > > È corretto assegnarli a caso, di volta in volta,
        > > a uno degli altri tre
        > > casi?
        > > E nel caso generale?
        > >
        > > In lacrime sassofono, illuminaci.
        >
        > Hai un belink alla prima discussione?

        Grazie all'egregio dott. ing. sarrusofono che su piagnucolio esasperante ha ripristinato i servizi di proott search, ti recupero il mio sfavillante post:
        http://www.forumdeitroll.it/m.aspx?m_id=2480943
        che ciclando, ahimé, due volte, permette di avere il risultato sperato anche quando la somma non è uno. Ficoso
        • Avatar
          Scritto da
          Non Autenticato
          il 2010-03-29 22:22:00.0 alle 2010-03-29 22:22:00.0
          Re: Estrazione errata da un array
          > ti recupero il mio sfavillante post:
          > http://www.forumdeitroll.it/m.aspx?m_id=2480943
          > che ciclando, ahimé, due volte, permette di avere
          > il risultato sperato anche quando la somma non è
          > uno.
          > Ficoso

          Devo essere cieco, dov'è che cicla due volte?

          //numeri da estrarre
          var n = [1,2,3,4]
          //Quantità di probabilità di ogni numero
          var a = [0.50, 0.25, 0.25, 0];
          //ogni b[i] è la somma di a[i] + b[i-1] o quasi
          var b = [a[0], a[0]+a[1], a[0]+a[1]+a[2], a[0]+a[1]+a[2]+a[3] ];
          //b = [0.50,0.75,1,1]

          // == 1, è la somma di tutti i valori di a
          var S = b[b.length-1];

          var rndv = rnd()*S;    
          for (int i=0;i<b.length;i++)
              if (b[i]>=rndv)
                  return n[i];

          Dov'è che questo codice essenzialmente differisce da quello nel PDF, tratto da questo?
          • Avatar
            ☺
            Scritto da
            il 2010-03-29 22:45:00.0 alle 2010-03-29 22:45:00.0
            Trollate totali: 2013
            Re: Estrazione errata da un array

            - Scritto da:
            > > ti recupero il mio sfavillante post:
            > > http://www.forumdeitroll.it/m.aspx?m_id=2480943
            > > che ciclando, ahimé, due volte, permette di
            > avere
            > > il risultato sperato anche quando la somma non è
            > > uno.
            > > Ficoso
            >
            > Devo essere cieco, dov'è che cicla due volte?
            >
            > //numeri da estrarre
            > var n = [1,2,3,4]
            > //Quantità di probabilità di ogni numero
            > var a = [0.50, 0.25, 0.25, 0];
            > //ogni b[i] è la somma di a[i] + b[i-1] o quasi
            > var b = [a[0], a[0]+a[1], a[0]+a[1]+a[2],
            > a[0]+a[1]+a[2]+a[3]
            > ];
            > //b = [0.50,0.75,1,1]
            >
            > // == 1, è la somma di tutti i valori di a
            > var S = b[b.length-1];
            >
            > var rndv = rnd()*S;    
            > for (int i=0;i<b.length;i++)
            >     if (b[i]>=rndv)
            >         return n[i];
            >
            > Dov'è che questo codice essenzialmente differisce
            > da quello nel PDF, tratto da
            > questo?

            b lo inizializzo io in modo spicciolo perché sono 4 numeri, immagina un array da 1 mln di elementi...
            • Avatar
              Scritto da
              Non Autenticato
              il 2010-03-29 23:06:00.0 alle 2010-03-29 23:06:00.0
              Re: Estrazione errata da un array

              - Scritto da: suoranciata
              >
              > - Scritto da:
              > > > ti recupero il mio sfavillante post:
              > > >
              > http://www.forumdeitroll.it/m.aspx?m_id=2480943
              > > > che ciclando, ahimé, due volte, permette di
              > > avere
              > > > il risultato sperato anche quando la somma
              > non
              > è
              > > > uno.
              > > > Ficoso
              > >
              > > Devo essere cieco, dov'è che cicla due volte?
              > >
              > > //numeri da estrarre
              > > var n = [1,2,3,4]
              > > //Quantità di probabilità di ogni numero
              > > var a = [0.50, 0.25, 0.25, 0];
              > > //ogni b[i] è la somma di a[i] + b[i-1] o quasi
              > > var b = [a[0], a[0]+a[1], a[0]+a[1]+a[2],
              > > a[0]+a[1]+a[2]+a[3]
              > > ];
              > > //b = [0.50,0.75,1,1]
              > >
              > > // == 1, è la somma di tutti i valori di a
              > > var S = b[b.length-1];
              > >
              > > var rndv = rnd()*S;    
              > > for (int i=0;i<b.length;i++)
              > >     if (b[i]>=rndv)
              > >         return n[i];
              > >
              > > Dov'è che questo codice essenzialmente
              > differisce
              > > da quello nel PDF, tratto da
              > > questo?
              >
              > b lo inizializzo io in modo spicciolo perché sono
              > 4 numeri, immagina un array da 1 mln di
              > elementi...

              Sì, costruisci l'array prima del ciclo invece che l'elemento corrente durante il ciclo. Che differenza comporta con le probabilità?

              S cosa fa? A me pare che S = 1.

              Una possibile risposta l'ho trovata:

              Supponiamo p0 = 2/3, p1 = 1/3
              per i calcoli pratici
              p0 = 0,667
              p1 = 0,333
              supponendo, per amplificare, che questo particolare computer faccia i calcoli a 3 cifre decimali. L'arrotondamento, secondo le consuete regole degli arrotondamenti, dà due probabilità che sommate danno 1.
              In questo caso il corretto arrotondamento risolve il problema.

              Ma funziona in tutti i casi? No:
              se p0 = p1 = p2 = 1/3 = 0,333 per i calcoli pratici,
              l'arrotondamento lascia fuori uno 0,001. Assegnarlo a uno dei tre elementi lo privilegia in modo arbitrario.
              b = [0,333, 0,666, 0,999]
              che fare quando il numero estratto a caso è > 0,999?

              Per non rompere la casualità dei risultati proponevo di assegnarlo a caso a uno degli altri tre intervalli, ma mi chiedevo con che criterio.
              Si potrebbe sorteggiare un numero casuale in [0, 0,999[ (non più [0, 1[) e assegnare il risultato spurio all'intervallo in cui cade questo nuovo numero.

              Ma funzionerà in tutti i casi in cui si hanno probabilità che, troncate a d cifre decimali, assommano a meno di uno?

              Mi sento la testa piena di biglie. Perplesso
              • Avatar
                ☺
                Scritto da
                il 2010-03-29 23:08:00.0 alle 2010-03-29 23:08:00.0
                Trollate totali: 2013
                Re: Estrazione errata da un array

                - Scritto da:
                >
                > - Scritto da: suoranciata
                > >
                > > - Scritto da:
                > > > > ti recupero il mio sfavillante post:
                > > > >
                > > http://www.forumdeitroll.it/m.aspx?m_id=2480943
                > > > > che ciclando, ahimé, due volte, permette di
                > > > avere
                > > > > il risultato sperato anche quando la somma
                > > non
                > > è
                > > > > uno.
                > > > > Ficoso
                > > >
                > > > Devo essere cieco, dov'è che cicla due volte?
                > > >
                > > > //numeri da estrarre
                > > > var n = [1,2,3,4]
                > > > //Quantità di probabilità di ogni numero
                > > > var a = [0.50, 0.25, 0.25, 0];
                > > > //ogni b[i] è la somma di a[i] + b[i-1] o
                > quasi
                > > > var b = [a[0], a[0]+a[1], a[0]+a[1]+a[2],
                > > > a[0]+a[1]+a[2]+a[3]
                > > > ];
                > > > //b = [0.50,0.75,1,1]
                > > >
                > > > // == 1, è la somma di tutti i valori di a
                > > > var S = b[b.length-1];
                > > >
                > > > var rndv = rnd()*S;    
                > > > for (int i=0;i<b.length;i++)
                > > >     if (b[i]>=rndv)
                > > >         return n[i];
                > > >
                > > > Dov'è che questo codice essenzialmente
                > > differisce
                > > > da quello nel PDF, tratto da
                > > > questo?
                > >
                > > b lo inizializzo io in modo spicciolo perché
                > sono
                > > 4 numeri, immagina un array da 1 mln di
                > > elementi...
                >
                > Sì, costruisci l'array prima del ciclo invece che
                > l'elemento corrente durante il ciclo. Che
                > differenza comporta con le
                > probabilità?
                >
                > S cosa fa? A me pare che S = 1.
                >
                > Una possibile risposta l'ho trovata:
                >
                > Supponiamo p0 = 2/3, p1 = 1/3
                > per i calcoli pratici
                > p0 = 0,667
                > p1 = 0,333
                > supponendo, per amplificare, che questo
                > particolare computer faccia i calcoli a 3 cifre
                > decimali. L'arrotondamento, secondo le consuete
                > regole degli arrotondamenti, dà due probabilità
                > che sommate danno
                > 1.
                > In questo caso il corretto arrotondamento risolve
                > il
                > problema.
                >
                > Ma funziona in tutti i casi? No:
                > se p0 = p1 = p2 = 1/3 = 0,333 per i calcoli
                > pratici,
                > l'arrotondamento lascia fuori uno 0,001.
                > Assegnarlo a uno dei tre elementi lo privilegia
                > in modo
                > arbitrario.
                > b = [0,333, 0,666, 0,999]
                > che fare quando il numero estratto a caso è >
                > 0,999?
                >
                > Per non rompere la casualità dei risultati
                > proponevo di assegnarlo a caso a uno degli altri
                > tre intervalli, ma mi chiedevo con che
                > criterio.
                > Si potrebbe sorteggiare un numero casuale in [0,
                > 0,999[ (non più [0, 1[) e assegnare il risultato
                > spurio all'intervallo in cui cade questo nuovo
                > numero.
                >
                > Ma funzionerà in tutti i casi in cui si hanno
                > probabilità che, troncate a d cifre decimali,
                > assommano a meno di
                > uno?
                >
                > Mi sento la testa piena di biglie. Perplesso

                http://www.google.com/search?q=recursion
              • Avatar
                ☺
                Scritto da
                il 2010-03-29 23:12:00.0 alle 2010-03-29 23:12:00.0
                Trollate totali: 2013
                Re: Estrazione errata da un array

                > S cosa fa? A me pare che S = 1.

                Immagina di avere due mele grandi e due piccole tali che il raggio delle mele grandi è 8cm e di quelle piccole 5cm. Immagina che stiano in un cesto e decidiamo arbitrariamente che la probabilità di estrazione sia proporzionale al volume occupato.
                S non sarà uno, ma sarà la somma dei volumi delle 4 mele.
                • Avatar
                  ☺
                  Scritto da
                  il 2010-03-29 23:20:00.0 alle 2010-03-29 23:20:00.0
                  Trollate totali: 2013
                  Re: Estrazione errata da un array

                  - Scritto da: suoranciata
                  >
                  > > S cosa fa? A me pare che S = 1.
                  >
                  > Immagina di avere due mele grandi e due piccole
                  > tali che il raggio delle mele grandi è 8cm e di
                  > quelle piccole 5cm. Immagina che stiano in un
                  > cesto e decidiamo arbitrariamente che la
                  > probabilità di estrazione sia proporzionale al
                  > volume
                  > occupato.
                  > S non sarà uno, ma sarà la somma dei volumi delle
                  > 4
                  > mele.

                  Per chiarezza sostituisco nel codice che avevo postato.
                  var n = [1,2,3,4] //numero assegnato a ogni mela
                  var a = [~523.59,~523.59,~2144.66,~2144.66];
                  
                  var b = [];
                  for (var i=0;i<a.length;i++) {
                      b[i] = (i>0)?b[i-1]+a[i]:a[i];
                  }
                  //risultato:
                  //b = [523.59,1047.18,3191.84,5336.50]
                  
                  // == 1, è la somma di tutti i valori di a
                  var S = b[b.length-1];
                  //risultato:
                  //S = 5336.50
                  


                  etc.etc..
                • Avatar
                  Scritto da
                  Non Autenticato
                  il 2010-03-29 23:21:00.0 alle 2010-03-29 23:21:00.0
                  Re: Estrazione errata da un array
                  > > S cosa fa? A me pare che S = 1.
                  >
                  > Immagina di avere due mele grandi e due piccole
                  > tali che il raggio delle mele grandi è 8cm e di
                  > quelle piccole 5cm. Immagina che stiano in un
                  > cesto e decidiamo arbitrariamente che la
                  > probabilità di estrazione sia proporzionale al
                  > volume
                  > occupato.
                  > S non sarà uno, ma sarà la somma dei volumi delle
                  > 4 mele.

                  Mele? Perplesso Non possiamo fare degli esempi con dei numeri astratti? A bocca aperta

                  Inizio a capire cosa vuoi dire. Nel caso
                  a = [0,3 0,3 0,3]
                  b = [0,3 0,6 0,9],
                  gli intervalli hanno tutti la stessa ampiezza e la probabilità di estrarre il numero in uno di essi è esattamente 1/3.

                  Devo rimuginarci per vedere se questa pseudo-normalizzazione funziona in tutti i casi.

                  • Avatar
                    Scritto da
                    Non Autenticato
                    il 2010-03-30 00:08:00.0 alle 2010-03-30 00:08:00.0
                    Re: Estrazione errata da un array
                    > Devo rimuginarci per vedere se questa
                    > pseudo-normalizzazione funziona in tutti i
                    > casi.

                    Devo provare vari esempi di frazioni la cui somma dia uno, ma che ridotte a numeri decimali subiscano arrotondamenti per difetto.
                    • Avatar
                      Scritto da
                      Non Autenticato
                      il 2010-04-01 23:17:00.0 alle 2010-04-01 23:17:00.0
                      non riesco a trovare esempi
                      > > Devo rimuginarci per vedere se questa
                      > > pseudo-normalizzazione funziona in tutti i
                      > > casi.
                      >
                      > Devo provare vari esempi di frazioni la cui somma
                      > dia uno, ma che ridotte a numeri decimali
                      > subiscano arrotondamenti per difetto.

                      CACCHIO!

                      Il caso 1/3 1/3 1/3 se la cava ugualmente. Vorrei capire se per caso o se è sempre così, ma non riesco a trovare altri esempi di frazioni che:

                      sommate diano esattamente 1

                      corrispondano a numeri periodici con cifre da 1 a 4, in modo che l'arrotondamento sia per difetto.

                      -----

                      Per il momento appoggio qui questo appunto, domani lo uppo.
    • Avatar
      Scritto da
      Non Autenticato
      il 2010-03-30 08:26:00.0 alle 2010-03-30 08:26:00.0
      Re: Estrazione errata da un array

      - Scritto da:
      > Il metodo esposto in
      > http://insulae.net/pub/estrazione.pdf
      > (versione più recente)
      > è teoricamente corretto, ma in pratica può dare
      > dei
      > problemi.
      >
      > Ad esempio, supponiamo che le tre probabilità
      > siano 1/3, 1/3, 1/3. In tal caso, usando un
      > numero finito d di cifre decimali, saranno
      > rappresentate
      > da
      >
      > 0,333333...33333
      > 0,333333...33333
      > 0,333333...33333
      >
      > la cui somma dà
      >
      > 0,999999...99999
      >
      > Che fare del caso escluso, la cui probabilità è
      >
      > 0,000000...00001
      >
      > molto piccola ma corrispondente, nel caso di
      > molte estrazioni, a un numero di elementi
      > estratti diverso da zero? Che fare di quegli
      > elementi
      > estratti?
      >
      > È corretto assegnarli a caso, di volta in volta,
      > a uno degli altri tre
      > casi?
      > E nel caso generale?
      >
      > In lacrime sassofono, illuminaci.

      secondo me la somma deve essere 1, se non può esserlo bisogna decidere cosa cazzo fare. assegnare un infinitesimo in più a un intervallo a caso secondo me è una soluzione.
<softv>

Pagina generata in 144 millisecondi

Utenti attivi: 10 nell'ultimo minuto, 24 negli ultimi cinque minuti, 45 negli ultimi 15 minuti