[tahoe-dev] darcs patch: Add statistics module

Drew Perttula drewp at bigasterisk.com
Sun Jan 11 11:36:54 PST 2009


I have some notes regarding the python style. I didn't check the 
algorithms themselves.

+    assert p >= 0 and p <= 1, 'p must be in the range [0,1]'

Python supports the expression '0 <= p <= 1', which is slightly easier 
to read.

+    def bisect_k(low_k, high_k):
+        """
+        Recursive function to perform the search.
+        """

This part looks a lot like the stdlib 'bisect' module. That one is expecting to receive a sequence, and yours calculates elements on demand, but you could make an object that lazily runs pr_backup_file_loss() when bisect asks for an element. 

+    if k > n/2:
+        k = n - k
+
+    accum = 1.0
+    for i in range(1, k+1):
+        accum = accum * (n - k + i) / i;

These lines are doing integer division for legacy reasons. It would be more future proof and robust to put 'from __future__ import division' at the top of the file and use the explicit // operator in all the cases where you want int division.

+    return long(accum + 0.5)

long is going away, and in modern python versions, I think int can do everything that long can.




More information about the tahoe-dev mailing list