Post by Mateusz VistePost by ***@gmail.comJaki będzie rezultat rotr16(15,2). Czy będzie to 1111, czy
110000000000000011?
rotr16() to nie C.
Jeśli pytanie dotyczy specyficznego Microsoftowego rozszerzenia, to
https://docs.microsoft.com/en-us/cpp/intrinsics/rotr8-rotr16?view=msvc-160
Mateusz
To dotyczy tej pracy:
https://www.pcg-random.org/pdf/hmc-cs-2014-0905.pdf
Tam są używane rotate64. Kod jednego z generatorów, który mnie interesuje wygląda tak:
uint32_t rot1 = (uint32_t)(state >> 122u);
uint64_t high = (uint64_t)(state >> 64u);
uint64_t low = (uint64_t)state;
uint64_t xored = high ^ low;
uint64_t newlow = pcg_rotr_64(xored, rot1);
uint64_t newhigh = pcg_rotr_64(high, newlow & 63u);
return (((pcg128_t)newhigh) << 64u) | newlow;
Chcę wiedzieć co tam jest robione, żeby napisać taki rotate poprawnie w Pythonie. Ten sam generator XSL-RR-RR jest też wymieniony tutaj:
https://en.wikipedia.org/wiki/Permuted_congruential_generator