> On 2 Mar 2023, at 14:18, Peter Verswyvelen <
bug...@gmail.com> wrote:
>
> When seeding the xoshiro256** using 4 SplitMix64 calls, does anyone know how to find the initial seed (for the SplitMix64) exist that will produce a given first output value?
There are 2^192 such values.
> E.g. does the xoshiro256** first value function has an inverse function?
That does not make any mathematical sense--an inverse function implies a bijection, and there's no bijection between 2^64 and 2^256.
> I tried a brute force approach but it would take about 4 years to find such seeds on one NVIDIA A6000 GPU :)
You just have to solve an F₂-linear system which will be very underspecified, so it'll have a lot of solutions.
> I know SplitMix64 is invertible, but it's not clear how to solve for the xoshiro256** first statement the returns the random value, e.g. rotl(state0 + state3, 23) + state0;
That is xoshiro256++, not xoshiro256**. I have no idea how to invert the xoshiro256++ mixing function, but inverting the xoshiro256** mixing function is easy, as all three steps are invertible.
Ciao,
seba