Random для Attiny13

Otto
Offline
Зарегистрирован: 26.06.2016

Здравствуйте. Вопрос, есть вот такой компактный кусок кода для Attiny13, который занимает мало места и достаточно хорошо генерирует псевдо-рандом, выдавая значения от 0 до 7:

byte rnd() {
 static uint16_t seed;
 seed = (seed * 2053ul) + 13849;
 return (seed >> 8) & 7;
}

Как его изменить, что бы числа выпадали от 1 до 6?

 

Понимаю, что после битового И в конце можно поставить 6 и тогда считает до шести, но от нуля.

Как сделать сдвиг или доп. условие что бы счёт шёл от одного до шести.

 

Спасибо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Можно заменить побитовое И на остаток по модулю 6 (+1).  Но насколько равномерным будет результат, неизвестно. И в коде будет немного объемнее.