방해
- 는 범위의 상단이고 x 는 100 입니다.xx=100
- 은 총 드로우 수,귀하의 경우 n = 25 입니다.nn=25
임의의 수 , 시퀀스 ≤ y 의 각 숫자를 갖는 n 수의 시퀀스 수 는 y n 입니다. 이들 순서 중, y s를 포함하지 않는 수 는 ( y - 1 ) n이고 , 하나의 y를 포함하는 수 는 n ( y - 1 ) n - 1 이다. 따라서 둘 개 이상의와 시퀀스의 수 , Y (S)는
Y , n은 - ( Y - 1 ) Ny≤xn≤yyny( y− 1 )엔와이n ( y− 1 )n - 1와이
시퀀스의 총 수 N 높은 숫자로 번호 Y 적어도 두 함유 Y S IS
X Σ Y = 1 ( Y N - ( Y - 1 ) N - N ( Y가 - 1 ) n - 1 )
와이엔− ( y− 1 )엔- N ( Y− 1 )n - 1
엔와이와이∑와이= 1엑스( y엔− ( y− 1 )엔- N ( Y− 1 )n - 1)= ∑와이= 1엑스와이엔− ∑와이= 1엑스( y− 1 )엔− ∑와이= 1엑스n ( y− 1 )n - 1= x엔− n ∑와이= 1엑스( y− 1 )n - 1= x엔− n ∑와이= 1x − 1와이n - 1
총 시퀀스 수는 단순히 입니다. 모든 서열은 동일하게 가능하므로 확률은
x n − n ∑ y = x − 1 y = 1 y n − 1입니다.엑스엔
엑스엔− n ∑와이= x − 1와이= 1와이n - 1엑스엔
하여 나는 확률을 0.120004212454.x = 100 , n = 25
x , n
import itertools
import numpy.random as np
def countinlist(x, n):
count = 0
total = 0
for perm in itertools.product(range(1, x+1), repeat=n):
total += 1
if perm.count(max(perm)) > 1:
count += 1
print "Counting: x", x, "n", n, "total", total, "count", count
def simulate(x,n,N):
count = 0
for i in range(N):
perm = np.randint(x, size=n)
m = max(perm)
if sum(perm==m) > 1:
count += 1
print "Simulation: x", x, "n", n, "total", N, "count", count, "prob", count/float(N)
x=100
n=25
N = 1000000 # number of trials in simulation
#countinlist(x,n) # only call this for reasonably small x and n!!!!
simulate(x,n,N)
formula = x**n - n*sum([i**(n-1) for i in range(x)])
print "Formula count", formula, "out of", x**n, "probability", float(formula) / x**n
이 프로그램은 출력
Simulation: x 100 n 25 total 1000000 count 120071 prob 0.120071
Formula count 12000421245360277498241319178764675560017783666750 out of 100000000000000000000000000000000000000000000000000 probability 0.120004212454