出於好奇,我想知道是否有辦法通過python中的模擬解決二項係數。我嘗試了一下,但這些數字變得如此之快,以至於我無法解決這個問題,只能得到很少的數字。在python中模擬binominal coefficent(nCr)
我知道這question,但無法確定一個解決方案,只使用暴力解決係數。但我不得不承認,我不明白在那裏列出的所有實現。
這裏是我的幼稚的做法:
import random
import numpy as np
from math import factorial as fac
# Calculating the reference with help of factorials
def comb(n,k):
return fac(n) // fac(k) // fac(n-k)
# trying a simple simulation with help of random.sample
random.seed(42)
n,k = 30,3
n_sim = 100000
samples = np.empty([n_sim,k], dtype=int)
for i in range(n_sim):
x = random.sample(range(n),k)
samples[i] = sorted(x)
u = np.unique(samples, axis=0)
print(len(u))
print(comb(n,k))
有沒有可能爲大數字高效,快速做到這一點?
的可能的複製[統計:在Python的組合(https://stackoverflow.com/questions/3025162/statistics-combinations-in-蟒蛇) – Gahan
我沒有得到你的代碼:8行建成「ü」,這是不使用... 加:函數梳定義在你的代碼是在我的電腦上快速,可以處理相當大的數字,即使這是一個相當模糊的定義... – Setop