changed variable names
[physik/nlsop.git] / random.c
index 17cbd73..30a7fab 100644 (file)
--- a/random.c
+++ b/random.c
@@ -9,6 +9,8 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
+#include <stdlib.h>
+#include <math.h>
 
 #include "random.h"
 
@@ -62,7 +64,7 @@ u32 get_rand(u32 max)
   }
   c_ptr=b_ptr;
  }
+
  return((u32)(*(c_ptr++)*(max*1.0/((long long unsigned int)URAND_MAX+1))));
 }
 
@@ -71,3 +73,18 @@ u32 get_rand_lgp(u32 max,double a,double b)
  return((u32)(1.0*max*(-1.0*b+sqrt(b*b+2*a*((b+a/2)*get_rand(URAND_MAX)/((long long unsigned int)URAND_MAX+1))))/a));
 }
 
+u32 get_rand_reject(u32 max_x,u32 max_y,u32 *graph)
+{
+ u32 x,y;
+ unsigned char ok;
+
+ ok=0;
+ while(!ok)
+ {
+  x=get_rand(max_x);
+  y=get_rand(max_y);
+  if(y<=graph[x]) ok=1;
+ }
+
+ return x;
+}