趣題 和有可能為1的區間分布

2021-05-22 19:27:17 字數 1401 閱讀 9158

如果 10 個非負數 x1, x2, ..., x10 滿足 x1 + x2 + x3 + ... + x10 = 1 ,那麼這 10 個數都均勻地分布在 [0,1] 之間嗎?顯然不是。為了說明這一點,最好的方法或許是把分布情況變得有限——我們可以把 [0,1] 區間劃分成若干個小區間,並說明這 10 個數不可能均勻地分布在這些區間內。比方說,把 [0,1] 分成 [0, 0.25), [0.25, 0.5), [0.5, 0.75), [0.75, 1] 這四段:如果 10 個數都落在 [0, 0.25) 裡,它們的和是有可能為 1 的;但若 10 個數都落在 [0.75, 1] 裡,顯然它們的和不可能為 1 。乙個有趣的問題由此產生:考慮 10 個數的 4^10 種分布,它們的和有可能為 1 的有多少情況?

顯然, 10 個區間的右端點之和一定比 1 大。因此,只要 10 個區間的左端點之和不超過 1 ,就可以保證在這些區間中選的數之和可能為 1 。不妨把區間 [0, 0.25), [0.25, 0.5), [0.5, 0.75), [0.75, 1] 依次編號為 0, 1, 2, 3 ,由於它們的左端點分別為 0/4, 1/4, 2/4, 3/4 ,因此左端點之和不超過 1 相當於 10 個區間的編號之和不超過 4 。而和不超過 4 的 10 個非負整數,又與 4 個小球和 10 個隔板的排列順序一一對應,它們一共有 c(14, 4) = 1001 種情況。但在這 1001 種情況中, (4, 0 ,0, ..., 0), (0, 4, 0, ..., 0), ……, (0, 0, 0, ..., 4) 這 10 種情況是要排除的,因為區間編號只有 0 到 3 。因此,在 10 個數的 4^10 種區間分布中,只有 991 種分布才滿足它們的和可能為 1 。

接下來,我們自然而然地想到了這樣乙個問題:如果把 [0, 1] 劃分成不同的四段,問題的答案還是 991 嗎?好像並不是這樣。容易想到,由於偏小的數更容易出現,因此若劃分出來的區間在前面更密集一些,就會出現不止 991 種滿足要求的分布。那麼,同樣是把 [0, 1] 分成四段,滿足要求的分布最多能有多少個呢?

我們先來說明,答案最多不會多於 4^10 - 3^10 ,因為無論怎樣劃分區間,至少有 3^10 種分布是不滿足要求的。只需要注意到,如果某種分布符合要求,則所有區間的左端點之和一定比 1 小;那麼把所有 10 個區間都左移一下,原分布中的左端點之和就變成了新分布的右端點之和,由於它比 1 小,因此新的分布一定不符合要求。現在,假如 10 個數都只能落在編號為 1, 2, 3 的區間裡,那麼總的分布情況數就有 3^10 種。對於這裡面的每一種分布,要麼它自身是不合要求的,要麼所有區間左移一下後得到的新分布是不合要求的。因此,至少有 3^10 種分布不符合要求,也即最多有 4^10 - 3^10 種可行的分布。

這個上界是可以達到的。例如,四個區間分別為 [0, 0.01), [0.01, 0.02), [0.02, 0.03), [0.03, 1],則滿足要求的分布恰有 4^10 - 3^10 = 989527 種。

如何比較兩個有可能為null的例項

以前在寫程式的時候,碰到需要比較兩個有可能為null的例項時,為了避免出現nullpointerexception,經常用這樣的一段 來比較 abc cde if obj1 null obj2 null obj1 null obj1.equals obj2 obj2 null obj2.equals...

《趣題學演算法》 第1章1 3節加法原理和乘法原理

1.3 加法原理和乘法原理 組合數學中有兩條著名的原理 加法原理和乘法原理。利用這兩條原理可以快速地解決一些計數問題。加法原理 做一件事,完成它可以有n類辦法,在第一類辦法中有m1種不同的方法,在第二類辦法中有m2種不同的方法,在第n類辦法中有mn種不同的方法,那麼完成這件事共有n m1 m2 m3...

一道和位與操作 相關的趣題

在 google 的toplanguage 論壇中看到一道題目,和位與操作 相關。先簡單回顧一下什麼叫做位與操作符 位與操作 需要兩個整型運算元,在每個位的位置,如果兩個運算元對應的位都為 1,則操作結果中該位為 1,否則為0。unsigned char b1 0145 表達為二進位制,結果如下 0...