Size: a a a

2021 April 15

CD

Constantine Drozdov in pro.algorithms
Да, иначе было бы 1/2, или попадет или нет
источник

CD

Constantine Drozdov in pro.algorithms
В уши чебурашки 1/2 попасть
источник

P

Pi in pro.algorithms
источник

P

Pi in pro.algorithms
'As if these problems weren't NP-hard enough.'
источник
2021 April 16

DP

Defragmented Panda in pro.algorithms
linear congruential generator
x=mod(x*a+c,m)

x - текущее состояние
a - множитель, 3 например
c - слагаемое, 123 например
m - модуль, 2^10 например

генератор псевдослучайных чисел с с повторением не раньше примерно m шагов

можете подсказать как реализовать его для float, на основе функций floor(x) или abs(x), без mod(x,m)?

Мне кажется это возможно, но я не уверен
источник

A(

Andrey (@AndrewB330) in pro.algorithms
a%b=a-floor(a/b)*b?
источник

DP

Defragmented Panda in pro.algorithms
Да, спасибо! действительно так
источник

DP

Defragmented Panda in pro.algorithms
в генераторах псевдослучайных чисел обычно используют младшие биты умножения. например в x=mod(x*a+c,m), linear congruential generator

но насколько я понимаю старшие биты результата несут столько же полезной информации и на из основе тоже можно построить генератор псевдослучайных чисел, так?
источник

NE

Nyc Enas in pro.algorithms
как раз младшие биты из некоторых генераторов могут проваливать тесты на случайность, поэтому если выбирать, то лучше использовать старшие
источник

NE

Nyc Enas in pro.algorithms
а, у тебя вопрос о том как построить свой генератор, тут я не знаю
источник

DP

Defragmented Panda in pro.algorithms
не, смари

обычно мы делаем так: умножаем прошлое состояние на большую константу и прибавляем другую константу.

Но при умножении мы получаем overflow и старшие биты теряются. Так устроен int overflow в цпу. иначе пришлось бы делать полное умножение, которое во много раз дороже.

32 бит * 32 бит = ответ может требовать до 64 бит. т.е. какая бы ячейка не была большая, ответ потребует больше места чем входящие данные

так вот. цпу теряет половину бит слева (старшие, int overflow)

гпу теряет половину бит справа (младшие, float multiplication)
источник

DP

Defragmented Panda in pro.algorithms
я не могу перенести алгоритм с цпу на гпу из-за того что алгоритмы цпу ожидают другое поведение при overflow
источник

CD

Constantine Drozdov in pro.algorithms
этот генератор не использует mod 2^32
источник

CD

Constantine Drozdov in pro.algorithms
что мешает тебе эмулировать целочисленные операции во флоатах я не знаю
источник

DP

Defragmented Panda in pro.algorithms
lcg использует (его быстрый вариант)
источник

DP

Defragmented Panda in pro.algorithms
x=mod(x*3+12345,2^32)
источник

CD

Constantine Drozdov in pro.algorithms
https://en.wikipedia.org/wiki/Linear_congruential_generator
раздел "m a power of 2"
ты точно этого хочешь?
источник

CD

Constantine Drozdov in pro.algorithms
четные и нечетные числа чередуются, найс рандом
источник

DP

Defragmented Panda in pro.algorithms
если c!=0 то все норм
источник

CD

Constantine Drozdov in pro.algorithms
> четные и нечетные числа чередуются, найс рандом
источник