aboutsummaryrefslogtreecommitdiff
path: root/src/rps/test_rps.c
diff options
context:
space:
mode:
authorJulius Bünger <buenger@mytum.de>2018-04-09 20:57:14 +0200
committerJulius Bünger <buenger@mytum.de>2018-04-09 20:57:14 +0200
commitf8e43ed77a7ffbcf38034b28ddc7e1b00450f836 (patch)
treebcb896d22bba6e4e63c26b0129a4144f656d5746 /src/rps/test_rps.c
parent9d7a72525b8a08f16d1c711fc6cbd267bb5ee9ee (diff)
downloadgnunet-f8e43ed77a7ffbcf38034b28ddc7e1b00450f836.tar.gz
gnunet-f8e43ed77a7ffbcf38034b28ddc7e1b00450f836.zip
rps profiler: fix computation of probabilities
Diffstat (limited to 'src/rps/test_rps.c')
-rw-r--r--src/rps/test_rps.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/rps/test_rps.c b/src/rps/test_rps.c
index 2b5e4a8c3..086b0782e 100644
--- a/src/rps/test_rps.c
+++ b/src/rps/test_rps.c
@@ -1963,6 +1963,7 @@ static void compute_probabilities (uint32_t peer_idx)
1963 double prob_pull; 1963 double prob_pull;
1964 uint32_t view_size; 1964 uint32_t view_size;
1965 uint32_t cont_views; 1965 uint32_t cont_views;
1966 uint32_t number_of_being_in_pull_events;
1966 int tmp; 1967 int tmp;
1967 uint32_t count_non_zero_prob = 0; 1968 uint32_t count_non_zero_prob = 0;
1968 1969
@@ -1983,17 +1984,31 @@ static void compute_probabilities (uint32_t peer_idx)
1983 prob_push = 1.0 * binom (0.45 * view_size, 1) 1984 prob_push = 1.0 * binom (0.45 * view_size, 1)
1984 / 1985 /
1985 binom (view_size, 0.45 * view_size); 1986 binom (view_size, 0.45 * view_size);
1987 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1988 "\t\t%" PRIu32 " is in %" PRIu32 "'s view, prob: %f\n",
1989 peer_idx,
1990 i,
1991 prob_push);
1986 } else { 1992 } else {
1987 prob_push = 0; 1993 prob_push = 0;
1994 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1995 "\t\t%" PRIu32 " is not in %" PRIu32 "'s view, prob: 0\n",
1996 peer_idx,
1997 i);
1988 } 1998 }
1989 /* 2. Probability of peer i being contained in pulls */ 1999 /* 2. Probability of peer i being contained in pulls */
1990 view_size = rps_peers[peer_idx].cur_view_count; 2000 view_size = rps_peers[peer_idx].cur_view_count;
1991 cont_views = count_containing_views (i, peer_idx); 2001 cont_views = count_containing_views (i, peer_idx);
1992 prob_pull = 1.0 2002 number_of_being_in_pull_events =
1993 /
1994 (binom (view_size, 0.45 * view_size) - 2003 (binom (view_size, 0.45 * view_size) -
1995 binom (view_size - cont_views, 0.45 * view_size)); 2004 binom (view_size - cont_views, 0.45 * view_size));
1996 if (0 == cont_views) prob_pull = 0; 2005 if (0 != number_of_being_in_pull_events)
2006 {
2007 prob_pull = 1.0 / number_of_being_in_pull_events;
2008 } else
2009 {
2010 prob_pull = 0;
2011 }
1997 probs[i] = prob_push + prob_pull - (prob_push * prob_pull); 2012 probs[i] = prob_push + prob_pull - (prob_push * prob_pull);
1998 2013
1999 if (0 != probs[i]) count_non_zero_prob++; 2014 if (0 != probs[i]) count_non_zero_prob++;