blob: f919db896e8d6286807233d2a97ddafecfc4909d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
static double
gen_exp (double lambda)
{
double u = drand48 ();
return log (1 - u) / (-lambda);
}
int
main ()
{
int cluster = 1;
int i;
double avg_cluster = 0.0;
double avg_x;
int n_k = 0;
int smaller = 0;
int n_clusters = 0;
#define N 187250000.0
#define LAMBDA 2.0
#define K 1
for (i = 0; i < N; ++i)
{
double f;
f = gen_exp (LAMBDA);
if (f <= (1/(LAMBDA)))
{
cluster++;
smaller++;
}
else
{
avg_cluster += cluster + 1;
if (cluster == K)
n_k++;
cluster = 0;
n_clusters++;
}
avg_x += f;
}
printf ("Probability of %d: %f\n", K, n_k / N);
printf ("Average cluster size: %f\n", avg_cluster / ((double)n_clusters));
printf ("Average value: %f\n", avg_x / N);
printf ("Probability of smaller: %f\n", smaller / N);
}
|