V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chaogeonly
V2EX  ›  程序员

本科计算机毕业 4 年,工作 4 年,今天刚学会排列组合,突然对编程发现很有用

  •  
  •   chaogeonly · 2019-05-07 10:52:36 +08:00 · 11185 次点击
    这是一个创建于 2025 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不瞒大家说,今天和同学讨论一个问题:低开、高开、低走、高走,一共有多少个排列组合(当时还不明白排列和组合的具体含义),然后我就说是 A22 * 2,同学说不对,而是 A21 * A21,然后我就开始学习排列组合,因为排列组合在我做“扛精”的道路上已经好几次吃了不懂的亏,通过知乎的一个答案,我彻底明白了:

    排列就是一个萝卜一个坑啊,第一个坑有 m 种选择,第二个有 m-1 种,第 n 个有 m-n+1。
    算法就是排列公式啊。阶乘知道吧……
    
    组合就是在排列的基础上坑不需要顺序了,一把抓,排列除以坑的全排列就好。
    

    然后我突然发现,这个东西不就是我经常写的代码里面的一些基础思想吗,排序和其他的一些东西。 因此我有感而发,数学中还有什么基础的数学理论,对编程特别特别重要的呢。

    第 1 条附言  ·  2019-05-07 13:28:38 +08:00
    谢谢 @expy 提供的学习幼儿园到高中的数学网站:
    中文 - https://www.shuxuele.com/
    英文 - https://www.mathsisfun.com/
    72 条回复    2019-05-08 17:06:24 +08:00
    50infivedays
        1
    50infivedays  
       2019-05-07 10:56:21 +08:00   ❤️ 1
    离散数学拯救你
    MIMEIK
        2
    MIMEIK  
       2019-05-07 11:07:32 +08:00
    线性代数吧,概率论其次,高数反而用的没那么多(或者用线性代数以另一种方式解决了吧)
    学艺不精,就知道贝叶斯和傅立叶变换的一些应用
    想大致了解一些数学知识在计算机上的应用可以看看吴军的《数学之美》或者李永乐老师数学系列的视频
    lostberryzz
        3
    lostberryzz  
       2019-05-07 11:17:00 +08:00
    这不是高中数学吗。。
    whwq2012
        4
    whwq2012  
       2019-05-07 11:19:19 +08:00 via Android
    高中数学的非几何部分应该都用的到。
    hackerang
        5
    hackerang  
       2019-05-07 11:19:22 +08:00
    这东西你都不知道是怎么过高考的。。
    wallriding
        6
    wallriding  
       2019-05-07 11:20:24 +08:00
    刚过本科线的本科?
    aLazarus
        7
    aLazarus  
       2019-05-07 11:20:58 +08:00 via Android   ❤️ 9
    黑板上排列组合,你舍得解开嘛
    rocbomb
        8
    rocbomb  
       2019-05-07 11:21:08 +08:00   ❤️ 1
    我们本科有开 具体数学 课
    q397064399
        9
    q397064399  
       2019-05-07 11:21:47 +08:00
    这就基本的离散数学 ..
    HuasLeung
        10
    HuasLeung  
       2019-05-07 11:21:58 +08:00   ❤️ 1
    这不高中的数学么……你确定你是本科?
    xzc19970719
        11
    xzc19970719  
       2019-05-07 11:26:46 +08:00
    不不不。。这是高中最基本的概率题都得会的
    keith1126
        12
    keith1126  
       2019-05-07 11:31:45 +08:00   ❤️ 2
    本来以为楼主是非科班出身,结果一看“本科计算机”。

    我现在对本科产生了深深的怀疑...
    dinjufen
        13
    dinjufen  
       2019-05-07 11:35:58 +08:00
    楼上的几个,题主很多年一直不用不会忘?
    zonyitoo
        14
    zonyitoo  
       2019-05-07 11:39:01 +08:00
    什么学校的本科?要告诉一下即将报志愿的高考生听
    glaucus
        15
    glaucus  
       2019-05-07 11:42:02 +08:00 via iPhone
    这不是义务教育的内容吗……虽然我已经忘光了
    Lax
        16
    Lax  
       2019-05-07 11:46:28 +08:00
    @dinjufen 高中数学,而且如果还在写代码类的工作就应该会一直用到
    luozic
        17
    luozic  
       2019-05-07 11:49:31 +08:00
    這不是大學數學吧。。。這麽簡單?
    huntzhan
        18
    huntzhan  
       2019-05-07 11:49:33 +08:00
    什么学校的本科,以后招人重点关注一下
    Chingim
        19
    Chingim  
       2019-05-07 11:51:33 +08:00
    @dinjufen 他说刚学会
    longbye0
        20
    longbye0  
       2019-05-07 11:55:27 +08:00 via Android   ❤️ 1
    我觉得是 C21 * C21
    maplelin
        21
    maplelin  
       2019-05-07 12:04:56 +08:00
    傅立叶变换了解一下
    joyhub2140
        22
    joyhub2140  
       2019-05-07 12:13:00 +08:00   ❤️ 1
    排列组合是高中数学的内容。。。高考必考的。。。而且是属于非常基础的知识,属于概率入门中的入门知识。。
    huiyifyj
        23
    huiyifyj  
       2019-05-07 12:14:51 +08:00 via Android
    你的本科计算机是不教呢?还是自己没有学进去啊?🤣
    alwjlola
        24
    alwjlola  
       2019-05-07 12:15:58 +08:00 via Android
    高二的知识啊...
    Owenjia
        25
    Owenjia  
       2019-05-07 12:27:37 +08:00
    想问是哪个学校的本科……
    dobelee
        26
    dobelee  
       2019-05-07 12:29:15 +08:00 via Android
    常识理解+高二数学+本科离散数学。
    expy
        27
    expy  
       2019-05-07 12:31:04 +08:00   ❤️ 2
    这篇不错,排列组合;可重复不可重复的通项公式全有了。
    https://www.mathsisfun.com/combinatorics/combinations-permutations.html
    subpo
        28
    subpo  
       2019-05-07 12:35:51 +08:00
    确实是高中数学,高中记得很清楚,现在回忆一下已经不记得了,完蛋...
    CodingNaux
        29
    CodingNaux  
       2019-05-07 12:36:41 +08:00 via iPhone
    至今没用到啥数学………
    deepdark
        30
    deepdark  
       2019-05-07 12:37:16 +08:00 via Android   ❤️ 4
    我觉得你不仅数学不行,语文也不行。这个标题怎么都读不通,“突然对编程发现很有用”???
    bruce2000
        31
    bruce2000  
       2019-05-07 12:42:06 +08:00
    大多都很重要,只是水平问题接触不到那个层次
    lidongyx
        32
    lidongyx  
       2019-05-07 12:44:00 +08:00 via iPhone   ❤️ 1
    楼主现在才恍然大悟这一点都不奇怪,因为我们已经学的数学与实际脱节严重,有难学又没有太大的实用性。
    其实数学在应用方面本身就应该与编程结合,不仅如此在数学的教学手段与教学方向方面,也应该与编程结合。
    lidongyx
        33
    lidongyx  
       2019-05-07 12:48:18 +08:00 via iPhone
    最近我就在探索如何使用 Python 来学数学,https://zhuanlan.zhihu.com/math-with-python
    国外已经有非常多的实践了,最近也一直在潜修,哈哈
    Cabana
        34
    Cabana  
       2019-05-07 12:50:05 +08:00 via Android
    @longbye0 哈哈,看来楼主还是没分清
    @chaogeonly A 是排列,C 是组合
    ggmood
        35
    ggmood  
       2019-05-07 12:57:49 +08:00
    完了,楼主是不是已然懵逼?
    2589595915
        36
    2589595915  
       2019-05-07 13:05:59 +08:00   ❤️ 1
    非要嘲讽楼主,大家就开心了。
    sola97
        37
    sola97  
       2019-05-07 13:12:11 +08:00
    浙江高考改革前概率都是数学 1B 模块的内容,够不到一本线的老师都不会教。。
    Nicoco
        38
    Nicoco  
       2019-05-07 13:13:34 +08:00
    很多省份的高中数学都有,不知道楼主是那个身份高考的?
    alfchin
        39
    alfchin  
       2019-05-07 13:14:06 +08:00 via Android
    @huiyifyj 计算机系学的是数学 A 吧,最难的那种
    Yiki
        40
    Yiki  
       2019-05-07 13:14:11 +08:00
    到底有什么用都不具体说说
    你想表达你会组合用在哪里了
    我大二期末考考了概率就写这个
    shihty5
        41
    shihty5  
       2019-05-07 13:22:24 +08:00   ❤️ 1
    楼主的意思是想大家集思广益,看看数学或一些基础知识在编程应用的实践
    没必要秀优越感[doge]
    niboy
        42
    niboy  
       2019-05-07 13:26:34 +08:00
    现在小学奥数就已经开始学排列组合了,捆绑法、插排法......三年级就学,真的...
    maxco292
        43
    maxco292  
       2019-05-07 13:27:37 +08:00   ❤️ 1
    抽象代数,譬如 C 的 unsigned int 的加法是交换群
    Sapp
        44
    Sapp  
       2019-05-07 13:35:27 +08:00   ❤️ 1
    @whwq2012 几何其实也用得到,只不过是大多数后端用不到,前端还是要用的
    shyrock
        45
    shyrock  
       2019-05-07 13:37:24 +08:00
    计算机本科被黑得最惨的一次。。。
    darmau
        46
    darmau  
       2019-05-07 13:49:39 +08:00
    @lidongyx 看了外国教材才发现人家那真的是教科书,我们的是工具书。
    tchqiq
        47
    tchqiq  
       2019-05-07 13:58:34 +08:00
    同样 拿 python 写过统计程序后才真正理解什么叫统计显著和置信区间
    arzterk
        48
    arzterk  
       2019-05-07 14:28:51 +08:00
    丢个自己玩 math x cs 的博客 https://liudx1985.github.io/
    供参考
    逃:)
    Mavious
        49
    Mavious  
       2019-05-07 15:37:33 +08:00
    来,排列题一道,高中数学难度。当初先学排列,在学组合,最后学概率。我反而觉得概率最简单。

    某单位在元旦 3 天假期需要 6 名工作人员值班,每天上、下午各 1 人。A、B、C 三个科室各有 1 位科长和 1 位科员可以参与值班。要求每天都有科长参与值班,则共有多少种排班方法?
    limuyan44
        50
    limuyan44  
       2019-05-07 15:38:34 +08:00 via Android
    这么看各地区教学还真不同,我们是高中教的,才知道大学才教的这么多。
    wolfie
        51
    wolfie  
       2019-05-07 16:09:12 +08:00
    看标题以为是抖机灵
    hyanwang
        52
    hyanwang  
       2019-05-07 16:09:23 +08:00
    中国的孩纸死在应用数学上……
    janxin
        53
    janxin  
       2019-05-07 16:22:59 +08:00 via iPhone
    你是大学没学过吗…
    mikoshu
        54
    mikoshu  
       2019-05-07 16:37:56 +08:00
    好像很多 比如我之前做小游戏 碰撞检测就用的勾股定理 然后还有各种三角函数的使用 还有矩阵 等等呀 最近看一本书叫 数学之美 各种离散数学 和概率论的东西 其实对人工智能啥的都有很大的帮助 不过具体我也不太懂 反正 数学牛逼
    qwertyzzz
        55
    qwertyzzz  
       2019-05-07 16:49:53 +08:00
    你们记性都这么好的吗 谁不知道高中学过一样。
    huiyifyj
        56
    huiyifyj  
       2019-05-07 16:51:50 +08:00
    @alfchin #39
    是啊,高数是 A 难度,还有离散,线性代数,概率论,一大堆数学相关的专业课。大一大二真被这些逼疯了。
    lastpass
        57
    lastpass  
       2019-05-07 16:59:24 +08:00 via Android
    来搞 spark 吧。你会天天琢磨离散,线代的。
    orzorzorzorz
        58
    orzorzorzorz  
       2019-05-07 17:10:47 +08:00
    ...看了这么多楼,突然发现我不配写代码了
    yangzhezjgs
        59
    yangzhezjgs  
       2019-05-07 17:22:13 +08:00
    组合数学了解一下,一般是研究生的课
    JerryJet
        60
    JerryJet  
       2019-05-07 17:28:44 +08:00
    计算机科学可以说是数学衍生的分支学科吧
    goodmorningivan
        61
    goodmorningivan  
       2019-05-07 17:29:29 +08:00
    之前编码的时候,可能因为是等级较低的码农,只有在实现一些底层的算法时,才感觉之前的数学有点用,应用层、业务层的东西,感觉基本和数据不怎么沾边。。。
    fsafdasfsdafsd
        62
    fsafdasfsdafsd  
       2019-05-07 18:34:12 +08:00
    递归或者分治更准确吧,
    salamanderMH
        63
    salamanderMH  
       2019-05-07 18:39:55 +08:00 via Android
    这是高中的题
    ruter2019
        64
    ruter2019  
       2019-05-07 19:15:26 +08:00
    高中就学了吧
    mattx
        65
    mattx  
       2019-05-07 19:15:55 +08:00
    sanxidiot
        66
    sanxidiot  
       2019-05-07 21:11:06 +08:00 via Android
    计算机是工科,用到的数学其实是属于简单而且比较少的了。数学对于算法是很重要的,如果你是做图像的的话,不管是 ai、还是图形学都与数学密切相关。
    其实用不用到数学以及用到多深的数学还是与你做什么,做的有多深有关。
    对于计算机而言,数学比较重要的是基础的微积分(数学基础,不会微积分就不用学数学了,不过好在计算机的要求不是很高,不过学的深入肯定更好),概率论,线性代数。除此之外还有离散数学(一堆计算机密切的数学领域的杂糅,包括组合数学),计算方法等。
    以上是一个普通 lj 计算机本科教的数学,与名校难度无法比,所以不要怪大家怀疑 lz 的学历,而是这些真的就是计算机本科基础教学内容。
    如果你还想深入的话看需求学就好了,比如 AI 的话可以学一些凸优化的内容。
    Xs0ul
        67
    Xs0ul  
       2019-05-07 21:25:36 +08:00
    @maxco292 异或是 Z2 上的交换群。看到这个我才告别硬记真值表,并且理解为啥它有交换律
    MonoLogueChi
        68
    MonoLogueChi  
       2019-05-07 21:29:38 +08:00 via Android
    @whwq2012 做游戏的话,几何部分会用的更多,很多地方都需要用到空间变换
    oneisall8955
        70
    oneisall8955  
       2019-05-07 22:23:27 +08:00 via Android
    高中数学有相关的课程,具体应该是离散数学某个章节吧
    akira
        71
    akira  
       2019-05-08 03:30:09 +08:00
    娃娃小学四年级了,前几天看他们数学已经在学组合了
    curdoldman
        72
    curdoldman  
       2019-05-08 17:06:24 +08:00
    你这是在黑大学计算机专业
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1408 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 17:30 · PVG 01:30 · LAX 09:30 · JFK 12:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.