🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309634

Re: Rozkład odwrotnie proporcjonalny

#309634
From: bartekltg
Date: Thu, 19 Jul 2018 13:49
66 lines
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-mail
References: <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