Мало ли кому это поможет, как и мне. Функция генератора псевдослучайных чисел.
Функция выдает случайное число от 1 до 65535.
Вторая доп.функция вводит диапазон нужных чисел.
Автор кода - El Tangas
Распределение чисел
Спойлер
Код: Выделить всё
#define random() rnd()
register uint16_t rnd_seed asm("r8");
uint16_t rnd() {
union {
uint16_t full;
struct as_bytes {
uint8_t low;
uint8_t high;
} byte;
struct as_bits {
uint8_t _0: 1;
uint8_t _1: 1;
uint8_t _2: 1;
uint8_t _3: 1;
uint8_t _4: 1;
uint8_t _5: 1;
uint8_t _6: 1;
uint8_t _7: 1;
uint8_t _8: 1;
uint8_t _9: 1;
uint8_t _10: 1;
uint8_t _11: 1;
uint8_t _12: 1;
uint8_t _13: 1;
uint8_t _14: 1;
uint8_t _15: 1;
} bit;
} random;
random.full = rnd_seed;
random.bit._7 = random.bit._1;
random.byte.low = random.byte.high ^ random.byte.low;
random.byte.high = random.byte.low ^ (random.byte.low << 1);
rnd_seed <<=1;
if (random.bit._15 == 1) rnd_seed++;
return rnd_seed;
}
void randomize_rantime (void) {
rantime = random();
while (rantime > 5400) rantime -= 5400;
rantime += 1800;
}Вторая доп.функция вводит диапазон нужных чисел.
Автор кода - El Tangas
Распределение чисел
Спойлер
Мало ли есть такие же тупенькие как я, и это им поможет. Админы, если ошибся разделом перенесите пожалуйста
Последний раз редактировалось sTRog Вс фев 12, 2017 08:18:36, всего редактировалось 1 раз.
