12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #ifndef __INC_LIB8TION_RANDOM_H
- #define __INC_LIB8TION_RANDOM_H
- #define FASTLED_RAND16_2053 ((uint16_t)(2053))
- #define FASTLED_RAND16_13849 ((uint16_t)(13849))
- extern uint16_t rand16seed;
- LIB8STATIC uint8_t random8(void)
- {
- rand16seed = (rand16seed * FASTLED_RAND16_2053) + FASTLED_RAND16_13849;
-
-
- return (uint8_t)(((uint8_t)(rand16seed & 0xFF)) +
- ((uint8_t)(rand16seed >> 8)));
- }
- LIB8STATIC uint16_t random16(void)
- {
- rand16seed = (rand16seed * FASTLED_RAND16_2053) + FASTLED_RAND16_13849;
- return rand16seed;
- }
- LIB8STATIC uint8_t random8_max(uint8_t lim)
- {
- uint8_t r = random8();
- r = (r*lim) >> 8;
- return r;
- }
- LIB8STATIC uint8_t random8_min_max(uint8_t min, uint8_t lim)
- {
- uint8_t delta = lim - min;
- uint8_t r = random8_max(delta) + min;
- return r;
- }
- LIB8STATIC uint16_t random16_max(uint16_t lim)
- {
- uint16_t r = random16();
- uint32_t p = (uint32_t)lim * (uint32_t)r;
- r = p >> 16;
- return r;
- }
- LIB8STATIC uint16_t random16_min_max( uint16_t min, uint16_t lim)
- {
- uint16_t delta = lim - min;
- uint16_t r = random16_max(delta) + min;
- return r;
- }
- LIB8STATIC void random16_set_seed(uint16_t seed)
- {
- rand16seed = seed;
- }
- LIB8STATIC uint16_t random16_get_seed(void)
- {
- return rand16seed;
- }
- LIB8STATIC void random16_add_entropy(uint16_t entropy)
- {
- rand16seed += entropy;
- }
- #endif
|