<br><br><div class="gmail_quote">On Sat, Mar 14, 2009 at 1:37 PM,  <span dir="ltr">&lt;<a href="mailto:josef.pktd@gmail.com">josef.pktd@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Sat, Mar 14, 2009 at 3:11 PM, Charles R Harris<br>
<div class="im">&lt;<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt; wrote:<br>
</div><div class="im">&gt; Hi Josef,<br>
&gt;<br>
&gt; On Sat, Mar 14, 2009 at 12:14 PM, &lt;<a href="mailto:josef.pktd@gmail.com">josef.pktd@gmail.com</a>&gt; wrote:<br>
&gt; &lt;snip&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; {{{<br>
&gt;&gt; import numpy as np<br>
&gt;&gt;<br>
&gt;&gt; assert np.all(np.random.hypergeometric(3,18,11,size=10) &lt; 4)<br>
&gt;&gt; assert np.all(np.random.hypergeometric(18,3,11,size=10) &gt; 0)<br>
&gt;&gt;<br>
&gt;&gt; pr = 0.8<br>
&gt;&gt; N = 100000<br>
&gt;&gt; rvsn = np.random.logseries(pr,size=N)<br>
&gt;&gt; # these two frequency counts should be close to theoretical numbers<br>
&gt;&gt; with this large sample<br>
<br>
</div>Sorry, cut and paste error, the second case is k=2<br>
for k=1 the unpatched version undersamples, for k=2 the unpatched<br>
version oversamples, that&#39;s the reason for the inequalities; the<br>
bugfix should reallocate them correctly.<br>
<br>
for several runs with N = 100000, I get with the patched version<br>
<br>
&gt;&gt;&gt; rvsn = np.random.logseries(pr,size=N); np.sum(rvsn==1) / float(N)<br>
in range:  0.4951, 0.4984    # unpatched version is too small<br>
<br>
&gt;&gt;&gt; rvsn = np.random.logseries(pr,size=N); np.sum(rvsn==2) / float(N)<br>
 in range:  0.1980, 0.2001  # unpatched version is too large<br>
<br>
with constraints a bit more tight, it should be:<br>
<br>
&gt;&gt; assert np.sum(rvsn==1) / float(N) &gt; 0.49   # theoretical:  0.49706795<br>
&gt;&gt; assert np.sum(rvsn==2) / float(N) &lt; 0.205   # theoretical:  0.19882718<br>
</blockquote><div><br>OK. One more question: how often do the tests fail? I want to include a note to repeat testing if the test fails.<br><br>Chuck <br></div><br></div><br>