-
X-Received: by 2002:ac8:7cb:: with SMTP id m11mr32334638qth.72.1629751641464; Mon, 23
Aug 2021 13:47:21 -0700 (PDT)
X-Received: by 2002:ac8:7cb:: with SMTP id m11mr32334638qth.72.1629751641464; Mon, 23
Aug 2021 13:47:21 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news-out.google.com!nntp.g
oogle.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Mon, 23 Aug 2021 13:47:21 -0700 (PDT)
In-Reply-To: <5...@g...com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.169.12.87;
posting-account=5sNFBgoAAAAxlae8lv99mPyGsDs6ynwB
NNTP-Posting-Host: 77.169.12.87
References: <6...@g...com>
<0...@g...com>
<1...@g...com>
<f...@g...com>
<5...@g...com>
<2...@g...com>
<f...@g...com>
<4...@g...com>
<5...@g...com>
<6...@g...com>
<e...@g...com>
<c...@g...com>
<0...@g...com>
<c...@g...com>
<4...@g...com>
<7...@g...com>
<9...@g...com>
<2...@g...com>
<1...@g...com>
<9...@g...com>
<d...@g...com>
<b...@g...com>
<b...@g...com>
<f...@g...com>
<0...@g...com>
<8...@g...com>
<f...@g...com>
<a...@g...com>
<b...@g...com>
<2...@g...com>
<c...@g...com>
<8...@g...com>
<a...@g...com>
<d...@g...com>
<d...@g...com>
<2...@g...com>
<b...@g...com>
<1...@g...com>
<7...@g...com>
<1...@g...com>
<d...@g...com>
<9...@g...com>
<5...@g...com>
<4...@g...com>
<c...@g...com>
<1...@g...com>
<5...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8...@g...com>
Subject: Re: Jak zrobić test za pomocą PractRand?
From: "o...@g...com" <o...@g...com>
Injection-Date: Mon, 23 Aug 2021 20:47:21 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:215568
[ ukryj nagłówki ]poniedziałek, 23 sierpnia 2021 o 22:29:45 UTC+2 M.M. napisał(a):
> On Monday, August 23, 2021 at 9:11:14 PM UTC+2, o...@g...com wrote:
> > poniedziałek, 23 sierpnia 2021 o 15:58:45 UTC+2 M.M. napisał(a):
> > > On Monday, August 23, 2021 at 3:21:47 PM UTC+2, o...@g...com wrote:
> > > > poniedziałek, 23 sierpnia 2021 o 15:05:27 UTC+2 M.M. napisał(a):
> > > > > On Monday, August 23, 2021 at 2:31:39 PM UTC+2, o...@g...com wrote:
> > > > > > poniedziałek, 23 sierpnia 2021 o 11:18:03 UTC+2 M.M. napisał(a):
> > > > > > > On Monday, August 23, 2021 at 5:23:14 AM UTC+2, o...@g...com
wrote:
> > > > > > > > Właściwie to mój generator oblewa po 16 MB:
> > > > > > > >
> > > > > > > > length= 16 megabytes (2^24 bytes), time= 2.1 seconds
> > > > > > > >
> > > > > > > > A ten LCG oblewa po 2 MB:
> > > > > > > >
> > > > > > > > length= 2 megabytes (2^21 bytes), time= 3.3 seconds
> > > > > > > >
> > > > > > > > Czyli mój radzi sobie chyba lepiej. O ile to ma w ogóle jakiekolwiek
znaczenie, skoro testy prawdopodobnie nie są wykonywane poprawnie. Raczej wróżenie z
fusów.
> > > > > > > Jeśli użyłeś tego samego generatora co ja, tych samych stałych A i B,
jeśli zainicjowałeś x=1, jeśli odrzuciłeś sto
> > > > > > > początkowych wygenerowanych liczb (500 bitów), jeśli bierzesz tylko 5
najstarszych bitów - to powinno być tak samo jak
> > > > > > > u mnie... chociaż ja mam wersję PractRanda 0.94 a Ty 0.93 - nie wiem
czy zostało zmienione coś na tyle
> > > > > > > istotnego aby wyniki testów były całkiem inne. Raczej w nowszej wersji
testy powinny być bardziej surowe.
> > > > > > >
> > > > > > > Moje początkowe 1000 bitów wygląda tak:
> > > > > > > ./SimpPRNG 1 1000
> > > > > > > 1100010111000111110000011110101111001001011010001110
0011110011110000000011111001000101101111111000001111
1110100100110000011011001100101110100010010011011101
1111001010111011011101001101100110001001111000101011
0000010000011101011010011111101111110000010110010111
1110001010100101000000010111111000011001001110011110
1011010111110000100101100110100001110100000110101010
0011000100000110001111011100011100111110001011011101
0011001011001101100000100110110001101101111110010100
0010110101110111011010111111100001101101011101011011
1000001000011100100111000100011011000111100110001000
1001101100110001010001001111001110100101001000001101
0101000101111100100101110010011000001000001101101100
1101011100001010110100111101011010001000101100000001
0100111111010111001100111000111011001111001110101110
1000001001001001100100111110111110110000110010101011
0110011000101000101110000100101001001000000111010101
0100110100101110101111000100011100000000011000000010
1110000010110100110111011000100010101110000010010011
001101000101
> > > > > > >
> > > > > > > Wyświetlam z tych 5 bitów począwszy od najmłodszego:
> > > > > > >
> > > > > > > https://github.com/mmarszik/SimpPRNG/blob/main/main.
cpp
> > > > > > > type_out v = r();
> > > > > > > for( int k=0 ; k<bits && j<BUFF_SIZE && i<size ; k++, j++, i++ ) {
> > > > > > > buff[j] = '0' + (v & 1);
> > > > > > > v >>= 1;
> > > > > > > }
> > > > > > >
> > > > > > > Ale na jakość generatora i zaliczenie testów nie powinno wpłynąć
wyświetlanie od najstarszego.
> > > > > > >
> > > > > > > Początkowe liczby z tego generatora są statystycznie bardzo słabe jeśli
inicjuje się małą liczbą
> > > > > > > (np. jedynką), jest dużo zer na początku, warto odrzucić np. 100
początkowych generowań.
> > > > > > >
> > > > > > > Pozdrawiam
> > > > > > Mam inne wyniki. Oto wyniki w formacie dziesiętnym:
> > > > > >
> > > > > > x = 1
> > > > > >
> > > > > > x = (x * 79908886691 + 8143076871913) &
340282366920938463463374607431768211455 = 8222985758604
> > > > > >
> > > > > > 8222985758604 >> 123 = 0
> > > > > >
> > > > > > x = (8222985758604 * 79908886691 + 8143076871913) &
340282366920938463463374607431768211455 = 657089637254136791211277
> > > > > >
> > > > > > 657089637254136791211277 >> 123 = 0
> > > > > >
> > > > > > x = (657089637254136791211277 * 79908886691 + 8143076871913) &
340282366920938463463374607431768211455 = 52507301369171109219924401511286320
> > > > > >
> > > > > > 52507301369171109219924401511286320 >> 123 = 0
> > > > > >
> > > > > > x = (52507301369171109219924401511286320 * 79908886691 + 8143076871913) &
340282366920938463463374607431768211455 = 333442790507095493699328894974793383801
> > > > > >
> > > > > > 333442790507095493699328894974793383801 >> 123 = 31
> > > > > >
> > > > > > x = (333442790507095493699328894974793383801 * 79908886691 +
8143076871913) & 340282366920938463463374607431768211455 =
225174366013576153541971350915313012980
> > > > > >
> > > > > > 225174366013576153541971350915313012980 >> 123 = 21
> > > > > >
> > > > > > Czyli uzyskuję:
> > > > > >
> > > > > > 0
> > > > > > 0
> > > > > > 0
> > > > > > 31
> > > > > > 21
> > > > > >
> > > > > > I tak dalej. Jak mogą tu wychodzić inne wyniki?
> > > > > Jeśli nie ma błędów, to w tym przypadku nie można uzyskać innych wyników.
Jeśli nie pomijam 100 początkowych
> > > > > wygenerowanych liczb, to mam takie same liczby jak Ty:
> > > > > 0
> > > > > 0
> > > > > 0
> > > > > 31
> > > > > 21
> > > > > 4
> > > > > 3
> > > > > 9
> > > > > 9
> > > > > 7
> > > > > 25
> > > > > 12
> > > > > 15
> > > > > 16
> > > > > 24
> > > > > 11
> > > > > 20
> > > > > 14
> > > > > 25
> > > > > 27
> > > > >
> > > > > Jeśli pomijam to mam takie:
> > > > >
> > > > > 3
> > > > > 29
> > > > > 24
> > > > > 7
> > > > > 24
> > > > > 11
> > > > > 15
> > > > > 18
> > > > > 22
> > > > > 24
> > > > > 17
> > > > > 7
> > > > > 15
> > > > > 0
> > > > > 28
> > > > > 19
> > > > > 8
> > > > > 27
> > > > > 31
> > > > > 0
> > > > >
> > > > > W wielu generatorach początkowe liczby uznawane są za kiepskie. Jeśli to
jest ważne, pomija
> > > > > się wiele początkowych liczb. Ten generator jest tylko do minimalnego
sprawdzenia, ale jakoś
> > > > > odruchowo pominąłem chociaż 100 początkowych liczb. Generalnie, pobieranie
co N-tego bitu to
> > > > > najprostsza technika zwiększająca jakość generatora - ale spowalniająca
generator.
> > > > Wychodzi nam to samo, myślałem, że pominąłem pierwsze 500 bitów, a pominąłeś
100. Oczywiście zdaję sobie sprawę z tych słabości początkowych bitów, sam
projektowałem moje generatory, żeby unikać podobnych problemów. Niemniej mam
przekonanie, że nawet bez pominięcia pierwszych bitów ten generator też dobrze by
sobie poradził.
> > > >
> > > > Ale mniejsza z tym. Mamy te same generatory i ewidentnie problem jest z
formatem danych.
> > > Super, zawęziłeś obszar w którym jest problem :)
> > >
> > > Pozdrawiam
> > Czy możesz mi powiedzieć co konkretnie robisz z uzyskaną liczbą w formacie
dziesiętnym w C++, że zamieniasz ją na format binarny (ten właściwy format, nie
stringa binarnego jak w Pythonie). Spróbuję popytać i znaleźć tego odpowiednik w
Pythonie.
> Nie wiem jak mogę pomóc i trochę się gubię kiedy jaki dokładnie format masz na
myśli :)
>
> Zobacz, poniżej jest format binarny, bo ma same zera i jedynki:
> 01010111010101001001010
> Ale przecież czytasz to jako tekst, więc może to jest format tekstowy? ;-)
Ja sam już nie wiem co to jest. To jest oczywiście format binarny, ale jak się to
wypisuje, to są to ostatecznie znaki ASCII. Więc w bitach, to nie będzie ten sam
ciąg, pomimo, że to nie jest ostatecznie ciąg bitów, tylko zer i jedynek w ASCII.
> Może tego szukasz:
>
> https://stackoverflow.com/questions/908331/how-to-wr
ite-binary-data-to-stdout-in-python-3
>
> import sys
> sys.stdout.buffer.write(b"some binary data")
Dzisiaj to testowałem. Próbowałem:
sys.stdout.buffer.write(b"binary")
gdzie binary to moja liczba zapisana binarnie za pomocą:
split=[(w >> x) & 0xFFFFFFFF for x in reversed(range(0, 128, 32))]
binary = struct.pack('qqqq', split[0], split[1], split[2], split[3])
Ale to skutkuje tylko wypisaniem:
binarybinarybinarybinarybinarybinarybinarybinarybina
rybinarybinarybinarybinarybinarybinarybinarybinarybi
narybinarybinarybinarybinarybinarybinarybinarybinary
binarybinarybinarybinarybinarybinarybinarybinarybina
rybinarybinarybinarybinarybinarybinarybinarybinarybi
narybinarybinarybinarybinarybinarybinarybinarybinary
binarybinarybinarybinarybinarybinarybinarybinarybina
rybinarybinarybinarybinarybinarybinarybinarybinarybi
narybinarybinarybinarybinarybinary
Natomiast sys.stdout.buffer.write(binary) nie działa, oblewa testy jak zwykle.
Następne wpisy z tego wątku
- 23.08.21 23:06 o...@g...com
- 23.08.21 23:46 M.M.
- 24.08.21 00:27 o...@g...com
- 24.08.21 00:54 o...@g...com
- 24.08.21 01:43 o...@g...com
- 24.08.21 16:20 o...@g...com
- 24.08.21 17:49 o...@g...com
- 25.08.21 04:15 o...@g...com
- 25.08.21 04:24 o...@g...com
- 27.08.21 00:52 o...@g...com
- 29.08.21 16:29 o...@g...com
- 31.08.21 00:57 o...@g...com
- 31.08.21 02:36 M.M.
- 31.08.21 10:04 o...@g...com
- 23.09.21 02:28 o...@g...com
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-05-14 Ustawy o rejestracji obcych agentów (wpływu): fuj Gruzja/Rosja v. cacy USA
- 2024-05-14 VMWare :)
- 2024-05-14 Ulm => Solution Engineer (m/w/d) Data Center Technologies <=
- 2024-05-14 Będziemy się znowu zrzucać na elektryki...
- 2024-05-14 Pompa ciepla Kaisai
- 2024-05-14 Przyłączenie działki do sieci elektrycznej
- 2024-05-14 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2024-05-14 Kraków => SAP WM Consultant / Execution <=
- 2024-05-14 Wrocław => Business Development Manager - obszar bezpieczeństwa IT <
- 2024-05-14 Poznań => Interactive/Experience Designer <=
- 2024-05-14 Poznań => Interactive/Experience Designer <=
- 2024-05-14 Białystok => ERP Implementer <=
- 2024-05-14 Przerabianie na Indonezje
- 2024-05-14 Kielce => UX/UI Designer <=
- 2024-05-14 Warszawa => Sales Representative for Outsourcing Services <=