Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Insoluble marbles-in-urn problem?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg119987] Re: Insoluble marbles-in-urn problem?
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Mon, 4 Jul 2011 06:44:14 -0400 (EDT)
  • References: <201107030811.EAA21357@smc.vnet.net>
  • Reply-to: drmajorbob at yahoo.com

Here's an improvement for calculating the theoretical value:

Clear[q]
tenths = ConstantArray[1/10, 10];
q[x_List, y_] := Boole[y > 1] y/10
q[x_List] /; Length@x == 10 :=
    Total[q[x, #] & /@ x] PDF[MultinomialDistribution[10, tenths], x]
q[x_List] :=
    Module[{long = PadRight[x, 10]},
     Multinomial @@ Tally[long][[All, -1]] q@long]
Timing[q /@ IntegerPartitions@10 // Total]
% // Last // N

{0.010595, 612579511/1000000000}

0.61258

That still matches

1 - (9/10)^9

612579511/1000000000

Bobby

On Sun, 03 Jul 2011 14:27:22 -0500, DrMajorBob <btreat1 at austin.rr.com>
wrote:

> This matches my earlier guess:
>
> Clear[q]
> tenths = ConstantArray[1/10, 10];
> q[x_List, y_] := Boole[y > 1] y/10
> q[x_List] /; Length@x == 10 :=
>   Total[q[x, #] & /@ x] PDF[MultinomialDistribution[10, tenths], x]
> q[x_List] :=
>   Module[{long = PadRight[x, 10]}, Length@Permutations@long q@long]
> q /@ IntegerPartitions@10 // Total
> % // N
>
> 612579511/1000000000
>
> 0.61258
>
> 1 - (9/10)^9
>
> 612579511/1000000000
>
> Bobby
>
> On Sun, 03 Jul 2011 03:11:34 -0500, John Feth <johnfeth at gmail.com> wrote:
>
>> There is a huge urn full of marbles, each marked with a single digit:
>> 0, 1, 2, 3, 4, 5, 6, 7, 8, or 9.  The marked marble quantities are
>> uniformly distributed between all of the digits and the marbles are
>> thoroughly mixed.  You look away, choose 10 marbles, and put them in a
>> black velvet bag.
>>
>> When you have some time, you look away, open the bag, and remove one
>> marble.  You close the bag, look at the digit on the marble, open a
>> beer perhaps, and calculate the probability that there is at least one
>> more marble in the bag with the same digit.
>>
>> The answer is brute forced below is there a formal way to obtain the
>> answer?  I don't believe the marbles-in-urn standby, the
>> hypergeometric distribution, is any help at all.
>>
>> Copy and paste the algorithm below into Mathematica (V6 or newer) to
>> find the surprising answer, estimated from a million tests in about 16
>> seconds.
>>
>> Timing[rag=Table[x,{x,1,1000000}];For[i=1,i<Length[rag]+1,i+
>> +,rag[[i]]=Table[RandomInteger[{0,9}],{n,1,10}]];bug=Table[x,{x,
>> 1,Length[rag]}];For[i=1,i<Length[rag]+1,i+
>> +,bug[[i]]=RandomInteger[{1,10}]];selection=Table[rag[[i,bug[[i]]]],{i,
>> 1,Length[rag]}];freq:=Table[Count[rag[[i]],selection[[i]]],{i,
>> 1,Length[rag]}];bull=Tally[Characters[freq]];bullsort=Sort[bull];N[(Length[rag]-
>> bullsort[[1,2]])/Length[rag],10]]
>>
>> Below are some definitions that might make the algorithm above a
>> little less opaque.
>>
>> rag is a table of 10 digit random strings below
>>
>> (*rag=Table[x,{x,1,3}];For[i=1,i<Length[rag]+1,i+
>> +,rag[[i]]=Table[RandomInteger[{0,9}],{n,1,10}]];rag
>> {{9,6,5,3,4,9,1,7,4,3},{8,5,7,7,0,0,5,6,3,5},{1,1,8,0,9,0,4,3,4,3}}*)
>>
>> bug is a table of which digit to pick from each rag[ [ ] ] above, i.e.
>> the 4th from the left in rag[[1]], the 2nd from the left in rag[[2]],
>> etc.
>>
>> (*bug=Table[x,{x,1,Length[rag]}];For[i=1,i<Length[rag]+1,i+
>> +,bug[[i]]=RandomInteger[{1,10}]];bug
>> {4,2,5}*)
>>
>> selection is a table of the values of the digit picked above, i.e.,
>> the 4th digit in rag[[1]] is a 3, the 2nd digit in rag[[2]] is a 5,
>> etc.
>>
>> (*selection=Table[rag[[i,bug[[i]]]],{i,1,Length[rag]}]
>> {3,5,9}*)
>>
>> freq is a table of the number selected digits in rag[[n]], i.e., there
>> are two 3s in rag[[1]], three 5s in rag[[2]], one 9 in rag[[3]], etc.
>>
>> (*freq=Table[Count[rag[[i]],selection[[i]]],{i,1,Length[rag]}]
>> {2,3,1}*)
>>
>> bull tallies how many times the chosen digit occurs
>>
>> (*bull=Tally[Characters[freq]]
>> {{Characters[2],1},{Characters[3],1},{Characters[1],1}}*)
>>
>> bullsort tallies the number of times the chosen digit occurs; the
>> chosen digit occurred once one time (9's above), twice one time (4's
>> above), and once three times (5's above)
>>
>> (*bullsort=Sort[bull]
>> {{Characters[1],1},{Characters[2],1},{Characters[3],1}}*)
>>
>>
>
>


-- 
DrMajorBob at yahoo.com


  • Prev by Date: Re: Help with old Mathematica file
  • Next by Date: Re: Insoluble marbles-in-urn problem?
  • Previous by thread: Insoluble marbles-in-urn problem?
  • Next by thread: Re: Insoluble marbles-in-urn problem?