summaryrefslogtreecommitdiff
path: root/clusters.c
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);
}