数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: xuz

从数字 1~30 中任取 7 次,求取到 7 个数字之和恰好等于 100 的概率

[复制链接]
发表于 2023-6-4 11:21 | 显示全部楼层
本帖最后由 Treenewbee 于 2023-6-4 11:22 编辑

比如定义函数f(m,n,s)为1-m中选n个和为s的方法数

显然f(30,7,100)=f(29,6,70)+f(28,6,71)+f(27,6,72)+...+f(6,6,93)

而 f(29,6,70)=f(28,5,41)+f(27,5,42)+....+f(5,5,64)
......
回复 支持 1 反对 0

使用道具 举报

发表于 2023-6-4 11:23 | 显示全部楼层
相对来说,还是母函数的方法简单一些
回复 支持 反对

使用道具 举报

发表于 2023-6-5 10:23 | 显示全部楼层
  1. Length@Select[Subsets[Range@30, {7}], Total[#] == 100 &]
复制代码

35932
CoefficientList\(\bigg[\)Series\(\bigg[\)\(\displaystyle\bigg(\prod_{i=1}^{23}\frac{x^{31-x^i}}{x^i-1}\bigg)x^{-12*23},(x,0,211)\bigg],x\bigg]\)
{1, 1, 2, 3, 5, 7, 11, 15, 21, 28, 38, 49, 65, 82, 105, 131, 164, 201, 248, 300, 364, 436, 522, 618, 732,
858, 1005, 1168, 1355, 1560, 1794, 2049, 2336, 2648, 2995, 3370, 3784, 4228, 4714, 5233, 5796,
6393, 7037, 7715, 8440, 9200, 10006, 10845, 11729, 12643, 13598, 14580, 15598, 16637, 17707,
18791, 19898, 21012, 22140, 23266, 24397, 25516, 26629, 27721, 28795, 29837, 30851, 31822,
32753, 33632, 34460, 35226, 35932, 36568, 37135, 37626, 38041, 38375, 38628, 38797, 38882,
38882, 38797, 38628, 38375, 38041, 37626, 37135, 36568, 35932, 35226, 34460, 33632, 32753,
31822, 30851, 29837, 28795, 27721, 26629, 25516, 24397, 23266, 22140, 21012, 19898, 18791,
17707, 16637, 15598, 14580, 13598, 12643, 11729, 10845, 10006, 9200, 8440, 7715, 7037, 6393,
5796, 5233, 4714, 4228, 3784, 3370, 2995, 2648, 2336, 2049, 1794, 1560, 1355, 1168, 1005, 858,
732, 618, 522, 436, 364, 300, 248, 201, \164, 131, 105, 82, 65, 49, 38, 28, 21, 15, 11, 7, 5, 3, 2, 1, 1}
问题(1):怎么把35932拉出来?
问题(2):怎么把这些数加起来?
回复 支持 反对

使用道具 举报

发表于 2023-6-5 15:19 | 显示全部楼层

问题(3): (x,0,211)可以改(x,0,161)?
其他数字好像改不了(我只能是一点一点摸索)。
我用了很多+,一个一个一个一个加起来,答案没问题(2035800)
回复 支持 反对

使用道具 举报

发表于 2023-6-5 21:24 | 显示全部楼层
问题(1):怎么把35932拉出来?

  1. CoefficientList[
  2.   Series[ Product[(x^31 - x^j)/(x^(j + 12) - x^12), {j, 1, 23}], {x,
  3.     0, 161}], x][[90]]
复制代码

点评

[[73]]也行。  发表于 2023-6-8 17:51

评分

参与人数 1威望 +20 收起 理由
王守恩 + 20 妙不可言!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2023-6-5 21:24 | 显示全部楼层
问题(2):怎么把这些数加起来?

  1. Total@CoefficientList[
  2.   Series[ Product[(x^31 - x^j)/(x^(j + 12) - x^12), {j, 1, 23}], {x,
  3.     0, 161}], x]
复制代码

评分

参与人数 1威望 +10 收起 理由
王守恩 + 10 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2023-6-6 19:21 | 显示全部楼层
从 1~365 中取 12 个不同数, 求取到 12 个数之和恰好等于 2023 有 9,542,858,902,052,954,887 组。

CoefficientList\(\bigg[\)Series\(\bigg[\)\(\displaystyle\prod_{i=1}^{353}\frac{x^{366}-x^i}{x^{i+177}-x^{177}},(x,0,4236)\bigg],x\bigg]\)
回复 支持 反对

使用道具 举报

发表于 2023-6-7 16:19 | 显示全部楼层
从1~365中取52个不同数, 52个数之和恰好等于8888有 1,802,465,119,943,259,623,614,603,095,606,408,223,745,012,378,496,383,940,861,370 组。

公式(1)   CoefficientList\(\bigg[\)Series\(\bigg[\)\(\displaystyle\prod_{i=1}^{313}\frac{x^{366}-x^i}{x^{i+157}-x^{157}},(x,0,7510)\bigg],x\bigg]\)

公式(2)   CoefficientList\(\bigg[\)Series\(\bigg[\)\(\displaystyle\prod_{i=1}^{313}\frac{x^{209}-x^{i-157}}{x^{i}-1},(x,0,8767)\bigg],x\bigg]\)

公式(3)   CoefficientList\(\bigg[\)Series\(\bigg[\)\(\displaystyle\prod_{i=1}^{313}\frac{1-x^{366-i}}{x^{157-i}-x^{157}},(x,0,7510)\bigg],x\bigg]\)


公式(4)   CoefficientList\(\bigg[\)Series\(\bigg[\)\(\displaystyle\prod_{i=-156}^{156}\frac{x^i-x^{209}}{1-x^{157+i}},(x,0,7510)\bigg],x\bigg]\)
回复 支持 反对

使用道具 举报

发表于 2023-6-7 16:56 | 显示全部楼层
本帖最后由 小fisher 于 2023-6-8 08:28 编辑
Treenewbee 发表于 2023-6-4 11:21
比如定义函数f(m,n,s)为1-m中选n个和为s的方法数

显然f(30,7,100)=f(29,6,70)+f(28,6,71)+f(27,6,72)+.. ...


用excel VBA写了一个递归函数,发现这样的计算量也不小
Dim nCount As Long
Function f(m, n, s) As Long
    nCount = nCount + 1
   
    '递归终点:当s值小于等于0时,组合数为0
    If s <= 0 Then
        f = 0
        Exit Function
    End If
    '递归终点:当n=1时,若m大于等于s,组合数为1,反之为0
    If n = 1 Then
        If m >= s Then
            f = 1
        Else
            f = 0
        End If
        Exit Function
    End If
   
    '当n>1时,进行递归
    If s > m * n - n * (n - 1) / 2 Then '如果s的值大于1~m中最大的n个数之和,组合数为0
        f = 0
    ElseIf s < n * (n + 1) / 2 Then  '如果s的值小于1~m中最小的n个数之和,组合数为0
        f = 0
    Else
        f = 0
        For i = 1 To m - 1
            f = f + f(m - i, n - 1, s - m + i - 1)
        Next
    End If
End Function

Sub test()
    nCount = 0
    Debug.Print f(30, 7, 100), nCount
End Sub
输出结果:35932      179761

点评

递归不保存中间值,计算f(100,12,600)就不动了  发表于 2023-6-7 20:23

评分

参与人数 1威望 +15 收起 理由
Treenewbee + 15 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-8 11:14 | 显示全部楼层
  能不能解释你这个幂级数?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-6-23 07:10 , Processed in 0.111039 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表