View Single Post
  #1 (permalink)  
Old 02-21-2008, 05:19 PM
Stellaferox Stellaferox is offline
Senior Member
 
Join Date: Apr 2007
Posts: 192
Default Combinations Sub: choose(n,k)

Hi,

I developed a sub for computinf the amout of combinations, given a population N, choose subset K (notation: choose(n,k).
Example: how many combinations are possible for 7 cards from 52?
choose(52,7). To compute n!/((n-k)!*k!)
Because this creates an overflow for relatively small numbers I created an alternative and really fast routine.

Code:
Sub Choose(nn,kk)
	' effficient Choose method implementation

	If (nn<0) OR (kk<0) Then Msgbox("Invalid negative parameter in Choose()..")
	If (nn<kk) Then Return 0
	If (nn=kk) Then Return 1

	delta = 0
	imax = 0

	If (kk < (nn-kk)) Then 'choose(100,3)
		delta = nn-kk
		imax = kk
	Else 'choose(100,97)
		delta = kk
		imax = nn-kk
	End If

	ans = delta+1
	For i = 2 To imax
		ans = (ans * (delta + i))/i
	Next
	Return ans
End Sub
I am building an application for displaying and storing all possible combinations. When ready I will publish.

Have fun

Marc
Reply With Quote