1 #include <stdio.h>
2 #include <gsl/gsl_rng.h>
3 #include <gsl/gsl_histogram2d.h>
4
5 int
main(void)6 main (void)
7 {
8 const gsl_rng_type * T;
9 gsl_rng * r;
10
11 gsl_histogram2d * h = gsl_histogram2d_alloc (10, 10);
12
13 gsl_histogram2d_set_ranges_uniform (h,
14 0.0, 1.0,
15 0.0, 1.0);
16
17 gsl_histogram2d_accumulate (h, 0.3, 0.3, 1);
18 gsl_histogram2d_accumulate (h, 0.8, 0.1, 5);
19 gsl_histogram2d_accumulate (h, 0.7, 0.9, 0.5);
20
21 gsl_rng_env_setup ();
22
23 T = gsl_rng_default;
24 r = gsl_rng_alloc (T);
25
26 {
27 int i;
28 gsl_histogram2d_pdf * p
29 = gsl_histogram2d_pdf_alloc (h->nx, h->ny);
30
31 gsl_histogram2d_pdf_init (p, h);
32
33 for (i = 0; i < 1000; i++) {
34 double x, y;
35 double u = gsl_rng_uniform (r);
36 double v = gsl_rng_uniform (r);
37
38 gsl_histogram2d_pdf_sample (p, u, v, &x, &y);
39
40 printf ("%g %g\n", x, y);
41 }
42
43 gsl_histogram2d_pdf_free (p);
44 }
45
46 gsl_histogram2d_free (h);
47 gsl_rng_free (r);
48
49 return 0;
50 }
51