数学----有趣的扑克牌《一》 - L.J.SHOU的专栏 - 博客频道 - CSDN.NET



数学----有趣的扑克牌《一》 - L.J.SHOU的专栏 - 博客频道 - CSDN.NET

一副扑克牌,除去大小王后共52张牌,随机从中抽八张牌,问八张牌的和最有可能是多少?


分析:

这52张牌,其实就是数字 1 2 3 。。。13, 每个数字出现4次。随机抽出8个数,问组成的和最有可能是多少?

聪明的你可能想到了另一个很类似的问题,2 sum: 问一个数组中是否存在两个数的和等于某个给定的值。


当然,这里就类似于 8 sum。 但是,题目却问的是,最有可能的结果是多少?

怎么分析呢?

最简单,但最有效的方法就是举个例子,就能理清思路了。

和最小的话就是 1 + 1 + 1 + 1 + 2 + 2 + 2 +2 = 12, 可以想象这个和12来说,出现的概率非常之低。

同样,对于和 12*4 + 13*4= 100 来说,出现的概率同样非常之低。

那么[12, 100] 中间的数呢? 可以想象,这些数有更多的数的组合,使得其和等于这个值, 因此概率更大。

大胆地猜想,(12 + 100)/2  = 56, 概率最大,越靠近这个和,出现的概率越大


验证:

数学讲究严密性。刚刚的猜想是建立的观测的基础之上的。但是想必还是不能服众。

1. 另一种简单的分析思路:

大家可以看看 1 2 ...  12 13 , 这13个数其实是非常对称的。

为什么这么说呢, 【1+13】= 【2+12】 = 【3+11】= 。。。。= 【6 + 8】

『高斯小的时候就发现了这个规律。。』

上述的和都是 14, 也就是说,平均下来一个数就是7,因此7*8 = 56 的可能性最大。

当然,这样分析,不够严谨, 但有的时候,观察 + 猜想 = 成功


2. 咱们是学计算机呢,直接跑个程序验证不久 okay了。

最简单暴力的,就是枚举所有的情况,统计所有的和出现的次数。

当然,可能有人会说了,那不就是八重循环,吓死人啊....

可以采用 DFS, 就能避免写这么多个for 循环,代码如下:


Read full article from 数学----有趣的扑克牌《一》 - L.J.SHOU的专栏 - 博客频道 - CSDN.NET


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts