LibRan  0.1
Pseudo-random number distribution generator
ebbb.c
1 
2 #include <stdio.h>
3 #include "libran.h"
4 
5 int main() {
6  int r = 0;
8  int nint = 10;
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", .25);
16  LR_set_all(o, "n", nint);
17  r = LR_check(o);
18  printf("check r = %d\n", r);
19 
20  printf(" k PDF CDF\n");
21 if (0) {
22  for (int i = 0; i <= nint; i++) {
23  cdf = LRi_CDF(o,i);
24  pdf = LRi_PDF(o,i);
25  printf("% 3d %7.4f %7.4f\n", i,pdf,cdf);
26  }
27 } else {
28  for (int i = 0; i < nint; i++) {
29  x = begin + i;
30  LR_bin_set(b,x);
31  xcdf[i] = tot * LRi_PDF(o, i);
32  }
33  xcdf[nint] = tot * (1.0 - LRi_CDF(o, nint-1));
34 
35  for (int i = 0; i < tot; i++) {
36  r = LR_bin_add(b,x = (double) LRi_RAN(o));
37  if (r)
38  printf("%.3f %d\n", x, r);
39  }
40 
41  printf(" i bin cdf bin/cdf diff\n");
42  for (int i = 0; i <= nint; i++) {
43  printf("% 3d %8ld % 9.2f % 8.2f % 8.2f\n",
44  i, b->bins[i], xcdf[i],
45  b->bins[i]/xcdf[i], b->bins[i] - xcdf[i]);
46  }
47 }
48 
49  LR_rm(&o);
50  printf("%ld\n", sizeof(o));
51 }
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
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