LibRan  0.1
Pseudo-random number distribution generator
eppp.c
1 
2 #include <stdio.h>
3 #include "libran.h"
4 
5 int main() {
6  int r = 0;
8  int nint = 20;
9  double begin = 0.5, incr;
10  double delh = .0001;
11  float x, pdf, cdf, xcdf[nint];
12  long tot = 50*10007;
13  LR_bin *b = LR_bin_new(nint+1);
14 
15  LR_set_all(o, "p", 15.);
16  r = LR_check(o);
17  printf("check r = %d\n", r);
18 
19  printf(" k PDF CDF\n");
20 if (0) {
21  for (int i = 0; i <= nint; i++) {
22  cdf = LRi_CDF(o,i);
23  pdf = LRi_PDF(o,i);
24  printf("% 3d %7.4f %7.4f\n", i,pdf,cdf);
25  }
26 } else {
27  for (int i = 0; i < nint; i++) {
28  x = begin + i;
29  LR_bin_set(b,x);
30  xcdf[i] = tot * LRi_PDF(o, i);
31  }
32  xcdf[nint] = tot * (1.0 - LRi_CDF(o, nint-1));
33 
34  for (int i = 0; i < tot; i++) {
35  r = LR_bin_add(b,x = (double) LRi_RAN(o));
36  if (r)
37  printf("%.3f %d\n", x, r);
38  }
39 
40  printf(" i bin cdf bin/cdf diff\n");
41  for (int i = 0; i <= nint; i++) {
42  printf("% 3d %8ld % 9.2f % 8.2f % 8.2f\n",
43  i, b->bins[i], xcdf[i],
44  b->bins[i]/xcdf[i], b->bins[i] - xcdf[i]);
45  }
46 }
47 
48  LR_rm(&o);
49  printf("%ld\n", sizeof(o));
50 }
LR_bin * LR_bin_new(int n)
LR_bin_new(LR_data_type d, int n) - create new binning object.
Definition: LRbin.c:81
float LRi_CDF(LR_obj *o, int x)
LRi_CDF(LR_obj *o, int x) - cumulative distribution function.
Definition: LRdf.c:221
long * bins
Definition: libran.h:189
int LRi_RAN(LR_obj *o)
LRi_RAN(LR_obj *o) - random variate generator.
Definition: LRdf.c:179
int LR_check(LR_obj *o)
LR_check(LR_obj *o) - check and fix the LR object parameters if possible.
Definition: LRnew.c:470
Definition: libran.h:54
LR_obj * LR_new(LR_type t, LR_data_type d)
LR_new(LR_type t, LR_data_type d) - create the LR object and preset some default parameter values...
Definition: LRnew.c:60
the binning object - for tallying results
Definition: libran.h:184
int LR_bin_set(LR_bin *b, double x)
LR_bin_set(LR_bin *b, double x) - add bin boundary.
Definition: LRbin.c:137
int LR_rm(LR_obj **o)
LR_rm(LR_obj **o) - destroy the LR object and release allocated memory.
Definition: LRnew.c:432
int LR_bin_add(LR_bin *b, double x)
LR_bin_add(LR_bin *b, double x) - collect value to be binned.
Definition: LRbin.c:178
int LR_set_all(LR_obj *o, char *x,...)
LR_set_all(LR_obj *o, char *x, ...) - set all given LR object parameters.
Definition: LRset.c:194
The LibRan common header file.
the fundamental LibRan random variate distribution object
Definition: libran.h:134
Definition: libran.h:99
float LRi_PDF(LR_obj *o, int x)
LRi_PDF(LR_obj *o, int x) - probability distribution function.
Definition: LRdf.c:200