eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingrandom delphi w c/c++Re: random delphi w c/c++
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: "Sarr." <s...@g...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: random delphi w c/c++
    Date: Fri, 15 May 2009 17:23:23 +0200
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 68
    Message-ID: <guk1dg$eu0$2@inews.gazeta.pl>
    References: <gujmor$f0$1@inews.gazeta.pl> <gujqoh$8eq$1@news.onet.pl>
    <guju7d$2ev$1@inews.gazeta.pl>
    NNTP-Posting-Host: mail.vstep.nl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1242401008 15296 80.95.164.246 (15 May 2009 15:23:28 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Fri, 15 May 2009 15:23:28 +0000 (UTC)
    X-User: sarro
    In-Reply-To: <guju7d$2ev$1@inews.gazeta.pl>
    User-Agent: Thunderbird 2.0.0.16 (Windows/20080708)
    Xref: news-archive.icm.edu.pl pl.comp.programming:181907
    [ ukryj nagłówki ]

    Sarr. wrote:
    > Michoo wrote:
    >> Sarr. pisze:
    >>> witam,
    >>>
    >>> jedno pytanie do grupy: jak w c/c++ zasymulowac random number
    >>> generator z delphi?
    >>>
    >>> wikipedia twierdzi, ze jest to Linear congruential generator
    >>> [http://en.wikipedia.org/wiki/Linear_congruential_ge
    nerator] i nawet
    >>> podaje parametry, ale jakos nie udalo mi sie uzyskac zadowalajacych
    >>> wynikow.
    >> W sensie co było nie tak z funkcją rand()?
    >>
    >> Jest posixowa funkcja random o sporych możliwościach, ale będziesz jej
    >> mógł użyć pewnie tylko na gcc.
    >>
    > nie chodzi o dobry czy lepszy random - chodzi o dostanie identycznych
    > wynikow jak daje random z delphi6.
    >
    > pisze plugin w c++ do programu, ktory napisany byl w delphi6 wlasnie.
    > lwia czesc funkcjonalnosci idzie do pluginu a trzeba zachowac zgodnosc
    > wstecz.
    >
    >
    > pozdrawiam,
    >
    > Sarr.
    sam sobie odpowiem. sprawa rozwiazana, problemem bylo uzywanie przez
    mnie wartosci signed/unsigned. w kazdym razie, dla zainetersowanych,
    ponizej dzialajaca klasa symulujaca random z delphi6:

    class DelphiRandom
    {
    public:

    DelphiRandom(unsigned int seed)
    {
    SetSeed(seed);
    }
    void SetSeed(unsigned int seed)
    {
    _seed = seed;
    }
    int Next(const int max)
    {
    unsigned long long result = (unsigned long long)GetNext() * max;
    return (int)(result >> 32);
    }

    private:

    unsigned int GetNext()
    {
    // X[n+1] = ( a * X[n] + c ) % m
    // m = 232
    // a = 134775813 [0x08088405]
    // c = 1
    _seed = _seed * 0x08088405 + 1; // %m not needed as _seed is 32 bit
    return _seed;
    }

    unsigned int _seed;

    };

    cheers,
    Sarr.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

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: