rand.c 525 B

1234567891011121314151617181920212223242526272829
  1. /*
  2. * Copyright (c) 2021 Space Cubics, LLC.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include <stdlib.h>
  7. #include <sys/libc-hooks.h>
  8. #include <app_memory/app_memdomain.h>
  9. #define LIBC_DATA K_APP_DMEM(z_libc_partition)
  10. #define OUTPUT_BITS (0x7fffffffU)
  11. #define MULTIPLIER (1103515245U)
  12. #define INCREMENT (12345U)
  13. static LIBC_DATA unsigned long srand_seed = 1;
  14. void srand(unsigned int s)
  15. {
  16. srand_seed = s;
  17. }
  18. int rand(void)
  19. {
  20. srand_seed = (MULTIPLIER * srand_seed + INCREMENT) & OUTPUT_BITS;
  21. return srand_seed;
  22. }