Re: Programming Probability of puzzle in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg44906] Re: Programming Probability of puzzle in Mathematica
- From: bobhanlon at aol.com (Bob Hanlon)
- Date: Mon, 8 Dec 2003 02:29:15 -0500 (EST)
- References: <bqv1op$t07$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Needs["DiscreteMath`Combinatorica`"]; Test function used to determine if matrix is a magic square: Clear[test]; test[dim_Integer?Positive] := test[dim] = Module[ {n=dim^2, mn, m, mat, matT, t}, mn=Tr[Range[n]]/dim; mat=Array[m, {dim,dim}]; matT=Transpose[mat]; t=And @@ Join[ (Tr[#]==mn)& /@ mat, {Tr[mat]==mn}, (Tr[#]==mn)& /@ matT, {Tr[Reverse/@mat]==mn}]; Off[Part::pspec, Part::partw, Part::partd]; Function[Evaluate[t /.m[i_,j_]->#[[i,j]]]]]; Testing a known False result test[3][Partition[Range[9],3]] False Testing a known True result test[3][{{6,7,2},{1,5,9},{8,3,4}}] True There is a very low probability of generating a magic square so you should use many more trials than 1000 dim=3;s=Range[dim^2]; tries=200000; n=0; Table[If[test[dim][m=Partition[RandomPermutation[s],dim]],Print[m]; n=n+1],{tries}]; N[n/tries] Bob Hanlon In article <bqv1op$t07$1 at smc.vnet.net>, mathtutoring at comcast.net (art burke) wrote: << Not being a programmer, but yet inquisitive, I'd like to come up with several small programs that compute the probability of random numbers being inserted into let's say, a magic cube, triangle, or such that all rows, columns, and diagonals add up to a certain number. Let's say a 3x3 magic square, using the numbers 1,2,3,4,5,6,7,8 and 9. Of course, if you know how to put them into the magic square, all rows, diagonals, and columns add up to 15. Having Mathematica insert random numbers in cells, compute all sums and see if it has it correct, and keep up the repetions until it comes up with an average probability, let's say after 1000 tries....What would be the probability? >><BR><BR>