Chronology Current Month Current Thread Current Date
[Year List] [Month List (current year)] [Date Index] [Thread Index] [Thread Prev] [Thread Next] [Date Prev] [Date Next]

Re: [Phys-L] From a Math Prof (physics BS major) at my institution ( math challenge)



-----Original Message-----
From: Phys-l [mailto:phys-l-bounces@phys-l.org] On Behalf Of brian
whatcott
Sent: Wednesday, February 26, 2014 12:41 PM
To: phys-l@phys-l.org
Subject: Re: [Phys-L] From a Math Prof (physics BS major) at my institution (
math challenge)

If the intention is to draw five integers in the range 1..35 from a hat, what do
you do if you draw a number that's already drawn?

...
I think what Paul is saying is that after you pick a number you shouldn't put it back in the hat before having picked all five. I can't see how it could matter but I have created a new version of the code, one that uses all values returned by the pseudo-random distribution generator and it is running now with n = a million. I have pasted it below. See any mistakes in it? If not, what is your prediction on how the results will compare with those of the old code?

function dummy = getdist2(n)
tic
for m=1:n
a=zeros(21,5);
for i=1:21
numsLeft=0:36;
for j = 1:5
nIndex = fix(2+rand*(36-j));
a(i,j)=numsLeft(nIndex);
numsLeft=[numsLeft(1:nIndex-1),numsLeft(nIndex+1:38-j)];
end
end
a=sort(a,2);
nrounds(m)=sum(10==a(:)) + sum(20==a(:)) + sum(30==a(:));
nseq2(m)=0;
for i=1:21
b=diff(a(i,:));
nseq2(m)=nseq2(m)+sum(1==b);
end

end


for i=0:6
totalrounds(i+1)=sum(i==nrounds);
end
totalrounds=totalrounds

for i=0:6
totalseq2(i+1)=sum(i==nseq2);
end
totalseq2=totalseq2

for i=0:6
total(i+1)= sum( nseq2<=i & nrounds<=i );
end
total=total

toc
end