Article View: pl.comp.lang.c
Article #309634Re: Rozkład odwrotnie proporcjonalny
From: bartekltg
Date: Thu, 19 Jul 2018 13:49
Date: Thu, 19 Jul 2018 13:49
66 lines
3152 bytes
3152 bytes
On 11.07.2018 17:09, Borneq wrote:
> W dniu 29.01.2018 o 06:59, bartekltg pisze:
>> Trochę ścisłości by nie zaszkodziło;p
>> Jaki ma być ten rozkład? Na jakim przedziale?
>> To ile ma byc dla tych mniejszyhc czasów?
>> dla 10ms jeszcze 10 razy wiecej?
>
> Mam
> float randFloat(float a, float b)
> {
> double x = (double)rand() / RAND_MAX;
> return x*(b-a)+a;
> }
>
> RAND_MAX to znaczy maksymalnie możliwa wartość a nie o 1 większa.
> Mam trzy progi, i o wiele lepiej niż z dwoma:
> double alpha;
> int n = rand() % 100;
> if (n==0)
> alpha = randFloat(-100, 100);
> else if (n < 10)
> alpha = randFloat(-10, 10);
> else
> alpha = randFloat(0,1);
> Teraz chciałbym zastąpić to jednym rozkładem.
> Można wyobrazić sobie większą ilość progów:
> double alpha;
> int n = rand() % 64;
> if (n<1)
> alpha = randFloat(-64, 64);
> else if (n<2)
> alpha = randFloat(-32, 32);
> else if (n<4)
> alpha = randFloat(-16, 16);
> else if (n<8)
> alpha = randFloat(-8, 8);
> else if (n<16)
> alpha = randFloat(-4, 4);
> else if (n<32)
> alpha = randFloat(-2, 2);
> else
> alpha = randFloat(-1, 1);
>
> Trochę inaczej mi wyszło, bo w większości wypadków powinno być z
> przedziału (0,1) ale chodzi o coś takiego
> poza tym przedział pierwszy i drugi są jednakowe a każdy powinien być
> dwa razy dłuższy,to znaczy wydłużanie się przedziałów powinno być ciągłe.
Losujesz liczbę X z (0,64);
Patrzysz, w który przedział wpadła:
(0,1), (1,2), (2,4)... (32..64)
i w zależnośći, w który wpadł, przeskalowujesz ją
na odpowiedni zakre.
Np jeśli liczba jest w zakresie (2,4), chcesz, aby wpadła
w (-16,16). więc alpha = (X-3)*16
Rozkłąd jest taki sam. Czasem tracisz trochę bitów
znaczacych,a le neiwiele.
Czy będzto szybsze... niekoniecznie, zależy od generatora, sprawdź.
pzdr
bartekltg
Technical Details
Message-ID:
<piq4sr$2fc$1@node2.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<p4ljba$s91$1@node2.news.atman.pl> <2092e642-0d94-4fe1-bddd-5898784ad9b5@googlegroups.com> <pi56jc$md9$1@node2.news.atman.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: bartekltg <bartekltg@gmail.com> Newsgroups: pl.comp.lang.c Subject: Re: Rozkład odwrotnie proporcjonalny Date: Thu, 19 Jul 2018 15:49:14 +0200 Organization: ATMAN - ATM S.A. Lines: 67 Message-ID: <piq4sr$2fc$1@node2.news.atman.pl> References: <p4ljba$s91$1@node2.news.atman.pl> <2092e642-0d94-4fe1-bddd-5898784ad9b5@googlegroups.com> <pi56jc$md9$1@node2.news.atman.pl> NNTP-Posting-Host: 89-70-113-215.dynamic.chello.pl Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1532008155 2540 89.70.113.215 (19 Jul 2018 13:49:15 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Thu, 19 Jul 2018 13:49:15 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 In-Reply-To: <pi56jc$md9$1@node2.news.atman.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit