random.c 736 B

123456789101112131415161718192021222324252627282930313233
  1. #include "random.h"
  2. #include <stdlib.h>
  3. #include <time.h>
  4. void random___init__(PikaObj *self){
  5. srand(time(NULL));
  6. }
  7. int random_randint(PikaObj *self, int a, int b){
  8. return rand() % (b - a + 1) + a;
  9. }
  10. double random_random(PikaObj *self){
  11. return rand() / (double)RAND_MAX;
  12. }
  13. int random_randrange(PikaObj *self, int start, int stop, int step){
  14. if (step == 0) {
  15. return random_randint(self, start, stop);
  16. }
  17. int n = (stop - start + step) / step;
  18. int r = random_randint(self, 0, n - 1);
  19. return start + r * step;
  20. }
  21. PikaObj* random_seed(PikaObj *self, int a){
  22. srand(a);
  23. return NULL;
  24. }
  25. double random_uniform(PikaObj *self, double a, double b){
  26. return (b - a) * random_random(self) + a;
  27. }