Re: compositions with the restricted set of integers
- To: mathgroup at smc.vnet.net
- Subject: [mg105161] Re: [mg105143] compositions with the restricted set of integers
- From: danl at wolfram.com
- Date: Mon, 23 Nov 2009 06:50:17 -0500 (EST)
- References: <200911221110.GAA10476@smc.vnet.net>
> IntegerPartitions has a useful option restricting the values of > partitions. > For example, IntegerPartitions[6,2,{1,2,3,4,5,6}] . Does it exist for > Compositions? > > What I am looking for is a substitute for a lengthy and inefficient > approach described below. We through n dice. How many outcomes > *outs*correspond to the face total equal > *sum*? > I am aware about the recursive approach, but prefer to describe it in > terms > of integer partitioning (or compositions). > *Here is my intellectually insulting solution:* > > outs[sum_, thr_] := > Length[Flatten[ > Permutations /@ > Cases[IntegerPartitions[sum, thr, {1, 2, 3, 4, 5, 6}], > Table[_, {thr}]], 1]]; > > Mapping with permutations seems especially silly. > Is there a version of Compositions with the similar restrictive option > ({1, > 2, 3, 4, 5, 6})? > I would appreciate any other suggestions as well. > > Thanks > Michael I'm not sure this addresses your question, but a good way to do such computations is via generating functions. If each die has m outcomes, numbering 1-m, and we have some give number of throws, then the number of ways to get a given sum can be found as: countsums[sum_, throws_, m_] := SeriesCoefficient[(z*(1 - z^m)/(1 - z))^throws, {z, 0, sum}] This example agrees with your outs[30,8]. In[7]:= countsums[30, 8, 6] Out[7]= 125588 This example does not go into recursion, run out of memory, or in other ways cause trouble. In[8]:= countsums[300, 80, 6] Out[8]= 1986180404791119810432501428481165305715190860615069661053632 Daniel Lichtblau Wolfram Research
- References:
- compositions with the restricted set of integers
- From: michael partensky <partensky@gmail.com>
- compositions with the restricted set of integers