Jump to content
Macro Express Forums

Calculating combinatons

Recommended Posts

Until now I always refered to a certain website if I needed to calculate the number of k-element combinations within n-element set.

Today I wrote a macro that does the calculation for me. It is still hot, so there are still errors due occasional division by 0 which I am gonna deal with later, and few other shortcomings. But in general it works ok.

The website does the calculaton somehow for any REASONABLE n and k values while my macro will fail if it needs to calculate i.e. 25! (factorial of 25) as a part of calculating the combinations number. The website is probably (for sure) using a different algorithm to do the calculations than the one I used in my script. So, can anyone tell how does calculating combinations number look like in i.e VBA or Java? I mean, is there a native procedure (or something like this) one could use, and only enter the values of n and k, or it requires writing the whole code calculating the number of combinations step by step(in a way I did in the macro below). I know the website calculator is better at avoiding situation when an integer would receive a number larger than it can store. I just wonder whether the programmer deserves the credit for it or it is just an upside of the programming language used.



The macro attached prompts for the values of n and k and provides the result.

combinations calculator.mex

Link to comment
Share on other sites

It failed my first few simple tests:

n = 3 k = 2

n = 3 k = 1

n = 4 k = 1

n = 6 k = 5


I assume it fails with k = 1 for all n. And whenever n-k = 1.


I'd simply get the macro to open Excel and insert n and k into the function COMBIN().




Terry, East Grinstead, UK

Link to comment
Share on other sites

I assume it fails with k = 1 for all n. And whenever n-k = 1.

You're right. Due the algorithm I used, while calculating combinations for k=1 and for n-k=1 division by 0 occurs.

As for k=1 - it is easy to fix, cause when k=1 the combination number equals n. As for n-k=1 I know alright why the division by 0 occurs and I will deal with this later.


I'd simply get the macro to open Excel and insert n and k into the function COMBIN().

In the future I will need to calculate combinations on different users' machines. Dynamically. The need of extra software used in the process is not really an option. The macro I wrote works just fine within the range of numbers I will need it to work. It won't work for ie. n=400 and k=390 but that's ok, I'm not gonna need to calculate such numbers, ever.

But since the macro is written, I was just wondering how I could make the macro more varsatile, make it work with greater range of numbers. It would require a different algorithm... or I was hoping that there might exist some native procedure similar to Excel's function COMBIN() in VBA or Java or whatever language I could insert into ME script.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...