eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingSzybki algorytm na permutację › Re: Szybki algorytm na permutację
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
    OSTED!not-for-mail
    From: bartekltg <b...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: Szybki algorytm na permutację
    Date: Sat, 23 Apr 2016 11:47:44 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 43
    Message-ID: <nffgc0$foj$1@node1.news.atman.pl>
    References: <nfbjra$fer$1@node2.news.atman.pl>
    <5...@g...com>
    <nfed5s$4oo$1@node2.news.atman.pl>
    <d...@g...com>
    NNTP-Posting-Host: 89-73-81-145.dynamic.chello.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node1.news.atman.pl 1461404864 16147 89.73.81.145 (23 Apr 2016 09:47:44 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sat, 23 Apr 2016 09:47:44 +0000 (UTC)
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
    Thunderbird/38.6.0
    In-Reply-To: <d...@g...com>
    Xref: news-archive.icm.edu.pl pl.comp.programming:209339
    [ ukryj nagłówki ]

    On 23.04.2016 11:38, M.M. wrote:
    > On Saturday, April 23, 2016 at 1:47:09 AM UTC+2, bartekltg wrote:
    >> >On 22.04.2016 18:43, M.M. wrote:
    >>> > >On Friday, April 22, 2016 at 12:22:35 AM UTC+2, Borneq wrote:
    >>>> > >>z wykorzystaniem random()
    >>>> > >>Przychodzi mi do głowy jeden pomysł: tablicę posortowanych wielkości n i
    >>>> > >>drugą, początkowo wielkości 0.
    >>>> > >>Z posortowanych wybieram za pomocą random(n) któryś element, i
    >>>> > >>najważniejsze: w dziurę (dziura - element o indeksie random(n)) wkładam
    >>>> > >>element ostatni.
    >>>> > >>Potem wybieram za pomocą random(n-1) wkładam w dziurę.
    >>>> > >>I tak dalej
    >> >
    >>> > >
    >>> > >Może tak?
    >>> > >for( int i=1 ; i<=N ; i++ )
    >>> > > tab[i] = i;
    >>> > >for( int i=0 ; i<N*2 ; i++ )
    >>> > > swp( tab[rand()%N] , tab[rand()%N] );
    >> >
    >> >Bardzo źle.
    >> >Wynonujesz 4N losowań.
    >> >Czy rozkład wyniku jest równomierny, wcale bym się nie zakładał.
    >> >
    >> >pzdr
    >> >bartekltg
    > Nie wiem, też bym się nie założył, ale na pewno Knuth shuffle dał
    > mniejsze odchylenie standardowe w kilku testach:


    Knutha możęsz policzyć. Bardzo prosto. Wymyśl dowolną
    permutację i licz prawdopodobieństwo, że ją wylosujesz.
    W każdym kroku musisz wybrać właściwa liczbę i nie ma potem
    możliwośći popsucia. 1 liczba z n, 1 liczba z n-1....
    Łącznie prawdopodobieństwo 1/n! Identyczne dla dowolnej permutacji.


    BTW, dlaczego wołasz srand( seed ); dwa razy?


    pzdr
    bartekltg

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 23.04.16 12:10 M.M.

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: