home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / misc / sci / accrete / src / utils.c < prev   
Encoding:
C/C++ Source or Header  |  1992-11-30  |  1.9 KB  |  70 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4. #include <stddef.h>
  5. #include <stdlib.h>
  6. #ifdef AMIGA
  7. #ifdef HUGE_VAL
  8. #undef HUGE_VAL
  9. #endif /* HUGE_VAL */
  10. #endif /* AMIGA */
  11. #include <float.h>
  12. #include <time.h>
  13.  
  14. #include "const.h"
  15. #include "structs.h"
  16. #include "accrete.h"
  17.  
  18.  
  19. /*----------------------------------------------------------------------*/
  20. /*  This function returns a random real number between the specified    */
  21. /* inner and outer bounds.                                              */
  22. /*----------------------------------------------------------------------*/
  23.  
  24. double random_number (inner, outer)
  25. double inner, outer;
  26. {
  27. #ifndef BAD
  28.      double range; 
  29.      
  30.      range = outer - inner;
  31.             return((((double)rand()) / (double)(RAND_MAX)) * range + inner);
  32. /* was:     return((((double)rand()) / (double)(RAND_MAX)) * range - outer); */
  33.  
  34. #else
  35.      double range, rand_max = RAND_MAX, tmp_a; 
  36.  
  37.    
  38.      range = outer - inner;
  39.      printf("random_number(): inner = %f, outer = %f, range = %f\n",
  40.          inner, outer, range);
  41.  
  42.      printf("random_number(): RAND_MAX = %f\n", rand_max);
  43.  
  44.      tmp_a = (double)rand();    printf("random_number(): rand() = %f\n", tmp_a);
  45.      tmp_a = tmp_a / rand_max;    printf("random_number(): tmp_a = %f\n", tmp_a);
  46.      tmp_a = tmp_a * range;    printf("random_number(): tmp_a = %f\n", tmp_a);
  47.      tmp_a = tmp_a + inner;    printf("random_number(): tmp_a = %f\n", tmp_a);
  48.  
  49.      return(tmp_a);
  50. #endif
  51.  
  52. }
  53.  
  54.  
  55. /*----------------------------------------------------------------------*/
  56. /*   This function returns a value within a certain variation of the    */
  57. /*   exact value given it in 'value'.                                   */
  58. /*----------------------------------------------------------------------*/
  59.  
  60. double about (value, variation)
  61. double value, variation;
  62. {
  63.      return(value + (value * random_number(-variation,variation)));
  64. }
  65.  
  66. double random_eccentricity ()
  67. {
  68.      return(1.0 - pow(random_number(0.0, 1.0),ECCENTRICITY_COEFF));
  69. }
  70.