ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
17 мая
1151761 Топик полностью
RxTx (05.12.2021 22:53, просмотров: 258) ответил RxTx на Я давно бросил затею иметь универсальные самые-лучшие инструменты. Типа, иметь стамеску на все случаи жизни и на всю жизнь. Приходится хватать что есть... Иногда это оказывается такая клевая, маленькая стамесочка, что прямо приятно. Вот и с алгоритмами то же самое. Код что я привел выше выглядит каким-то примитивом, но если требуется залить шумом экран или вывести его на динамик - разницы никакой никто не увидит. А вот если нужно будет формировать на экране звёзды как
Есть такой RNG как XORSHIFT. Генераторы Xorshift являются одними из самых быстрых криптографически нестойких генераторов случайных чисел. Данный алгоритм доказал свою стойкость пройдя тесты DIEHARD и может использоваться практически во всех областях. Рекомендован Марсальей в качестве универсального. https://ru.wikipedia.org/wiki/Xorshift


Идем в \ZX\Exper\xorshift и достаем оттуда 16 и 8-битные версии:

static uint8_t y8 = 1;

uint8_t xorshift8(void) { y8 ^= (y8 << 1); y8 ^= (y8 >> 1); return y8 ^= (y8 << 2); }

Общая схема XORSHIFT'а:

r ^= r << A;

r ^= r >> B;

r ^= r << C;

return r;


где A,B,C можно выбирать оптимальными. Однако на архитектурах где отсутствует сдвиг на произвольное количество бит, искусство состоит в том чтобы

подобрать A,B,C такими чтобы машинный код получился оптимальным. Для 16-бит я выбрал 1,1,15; хотя есть и

9, 7, 13;

7, 9, 8;

7, 9, 13;

6, 7, 13;


r ^= (r << 1); r ^= (r >> 1); return r ^= (r << 15);
Спасибо, князь. Вы настоящий дворянин. И программист.