Это я помню. "на контроллерах законы математики не действуют", ага.
Оу, оу.
Это что-то новое.
Т.е. теперь "возможность реализации xorshift в КДС" уже под сомнение не ставится, но есть сомнение, что можно получить число от 0 до 1?
Интересные пироги.
На вскидку, есть 2 варианта:
1)
java.util.Random.nextFloat -- для REAL
Код:
public float nextFloat() {
return next(24) / ((float)(1 << 24));
}
2)
java.util.Random.nextDouble -- для LREAL
Код:
public double nextDouble() {
return (((long)next(26) << 27) + next(27))
/ (double)(1L << 53);
}
В итоге получается число от 0 (включительно) до 1.0 (не включительно).
next(n) -- это "очередное число длины n бит". Т.е.
Код:
next(n) == xorshift128() & ((1 << n)-1)