15 lines
330 B
Plaintext
15 lines
330 B
Plaintext
expected(n)=sum(i=1,n,n!/(n-i)!/n^i,0.);
|
|
test(n, times)={
|
|
my(ct);
|
|
for(i=1,times,
|
|
my(x=1,bits);
|
|
while(!bitand(bits,x),ct++; bits=bitor(bits,x); x = 1<<random(n))
|
|
);
|
|
ct
|
|
};
|
|
TIMES=1000000;
|
|
{for(n=1,20,
|
|
my(cnt=test(n, TIMES),avg=cnt/TIMES,ex=expected(n),diff=(avg/ex-1)*100.);
|
|
print(n"\t"avg*1."\t"ex*1."\t"diff);
|
|
)}
|