-
X-Received: by 2002:ac8:530c:: with SMTP id t12mr2344163qtn.111.1632358530624; Wed,
22 Sep 2021 17:55:30 -0700 (PDT)
X-Received: by 2002:ac8:530c:: with SMTP id t12mr2344163qtn.111.1632358530624; Wed,
22 Sep 2021 17:55:30 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
e.net!4.us.feeder.erje.net!feeder.erje.net!weretis.net!feeder6.news.weretis.net
!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.googl
e.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-fo
r-mail
Newsgroups: pl.comp.programming
Date: Wed, 22 Sep 2021 17:55:30 -0700 (PDT)
In-Reply-To: <b...@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>
<8...@g...com>
<5...@g...com>
<a...@g...com>
<6...@g...com>
<6...@g...com>
<2...@g...com>
<6...@g...com>
<d...@g...com>
<f...@g...com>
<9...@g...com>
<6...@g...com>
<8...@g...com>
<8...@g...com>
<e...@g...com>
<d...@g...com>
<1...@g...com>
<3...@g...com>
<a...@g...com>
<0...@g...com>
<8...@g...com>
<1...@g...com>
<b...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <6...@g...com>
Subject: Re: Jak zrobić test za pomocą PractRand?
From: "o...@g...com" <o...@g...com>
Injection-Date: Thu, 23 Sep 2021 00:55:30 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 84
Xref: news-archive.icm.edu.pl pl.comp.programming:215742
[ ukryj nagłówki ]Bardzo szybki powinien też być ulepszony przeze mnie PCG Melissy O'Neil o nazwie
XSL-RR-RR (128-bitowy, choć można stworzyć też wersje 64-bitowe i 32-bitowe):
https://en.wikipedia.org/wiki/Permuted_congruential_
generator
Normalnie oblewa on dosyć szybko testy PractRand (kod w Pythonie, sam mixer pewnie
można napisać lepiej w C, może jako jakieś macro):
import struct
import sys
x = 83866140117348733064738400095399246193
#seed
def PCGmixer(x):
count1 = x >> 122
x1 = (x ^ (x >> 64)) & 18446744073709551615
low64 = (x1 >> count1) | (x1 << (64 - count1)) & 18446744073709551615
x2 = (x >> 64) & 18446744073709551615
count2 = low64 & 63
high64 = (x2 >> count2) | (x2 << (64 - count2)) & 18446744073709551615
x = (high64 << 64) | low64
return x
def LCG(x):
x = (x * 47026247687942121848144207491837523525 +
83866140218348733064834828227924511723) & 340282366920938463463374607431768211455
return x
while 1 == 1:
x=LCG(x)
w=PCGmixer(x)
split = [(w >> x) & 0xFFFFFFFF for x in reversed(range(0, 128, 32))]
binary = struct.pack('IIII', split[0], split[1], split[2], split[3])
sys.stdout.buffer.write(binary)
Ale wystarczy dodać xorowanie kolejnych wyników:
import struct
import sys
x = 83866140117348733064738400095399246193
def PCGmixer(x):
count1 = x >> 122
x1 = (x ^ (x >> 64)) & 18446744073709551615
low64 = (x1 >> count1) | (x1 << (64 - count1)) & 18446744073709551615
x2 = (x >> 64) & 18446744073709551615
count2 = low64 & 63
high64 = (x2 >> count2) | (x2 << (64 - count2)) & 18446744073709551615
x = (high64 << 64) | low64
return x
def LCG(x):
x = (x * 47026247687942121848144207491837523525 +
83866140218348733064834828227924511723) & 340282366920938463463374607431768211455
return x
w=0
while 1 == 1:
w_1 = w
x=LCG(x)
w=PCGmixer(x)
w_2 = w_1 ^ w
#split = [(w_2 >> x) & 0xFFFFFFFF for x in reversed(range(0, 128, 32))]
#binary = struct.pack('IIII', split[0], split[1], split[2], split[3])
#sys.stdout.buffer.write(binary)
Żeby zdawał on testy. Oczywiście sam PCGmixer wydłuża czas pracy istotnie (względem
bazowego LCG), ale pewnie można go wykonywać szybciej.
Następne wpisy z tego wątku
- 16.06.23 13:32 o...@g...com
- 16.06.23 14:05 o...@g...com
- 16.06.23 14:07 o...@g...com
- 16.06.23 14:11 o...@g...com
- 21.06.23 05:48 o...@g...com
Najnowsze wątki z tej grupy
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
Najnowsze wątki
- 2025-07-23 Gdańsk => Programista Delphi <=
- 2025-07-23 Gdańsk => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-23 Warszawa => Starszy inżynier DevOps (AWS) <=
- 2025-07-23 Gdańsk => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-23 Kraków => Senior Fullstack Engineer (Low-Code Platform) <=
- 2025-07-23 Wrocław => Senior Key Account Manager IT <=
- 2025-07-23 Trójmiasto => Head of Social Media <=
- 2025-07-23 Rzeszów => Spedytor Międzynarodowy <=
- 2025-07-23 Lublin => ERP Implementation Consultant (AP Module) <=
- 2025-07-23 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-23 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-23 Kraków => Kotlin Developer <=
- 2025-07-23 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-07-23 Warszawa => Java Developer <=
- 2025-07-23 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=