Skip to main content

Find the nCr value with Python.



What is nCr notation?




Hello everyone from this post you will know how to find any nCr value with Python.
For those who don't know what nCr is, it is a standard notation in mathematics defined as shown below.







This notation is widely used in permutations and combination fields and binomial expansion. Even though we can use the Pascal Triangle to expand binomials it is easier to use the binomial theorem which uses the nCr notation.


The n! stands for the product of the numbers from 1 to n which is called the factorial of n.
The factorial is defined only for positive integers and 0. 

The factorial of 0 equals 1

The factorial of negative integers is not defined.


Calculate the nCr Value.


When you are provided with two values (n & r) you can use the above equation to calculate their nCr value. 

For instance, if you want to find 2C1 you can follow the steps below.






With Python.....



As shown above you can calculate any nCr value. But when the number increases it becomes harder to calculate and simplify. 

So we can get all the hard work done by Python.



The easy way...



Python's in-built math library provides you with a simple method to calculate the nCr values. Look it works.

import math
print(math.comb(10,5))



it is just one line.


The hard way... 


You can write your own function to calculate the nCr values without the support of the math library.
You have to write your own function to find the factorial or use the factorial function provided by the math library.

With the function provided by the math library

import math
def ncr(n,r):
    ncr = math.factorial(n)/(math.factorial(n-r)*math.factorial(r))
    return ncr


Write your own function to calculate the factorials.

def factorial(n):
    factorial = 1
    for x in range(1, n+1):
        factorial = factorial*x
   
    return factorial

Then use it instead of the one, provided by the library.




def factorial(n):
    factorial = 1
    for x in range(1, n+1):
        factorial = factorial*x
   
    return factorial



def ncr(n,r):
    ncr = factorial(n)/(factorial(n-r)*factorial(r))
    return ncr

print(ncr(6,4))


That's all hope you like it.

Don't forget to share.....

Comments

Trending Now

Let's talk about cryptography.

Have you ever heard of cryptography?  People write their diaries every day. For many of them, their diary is one of their best friends to whom they tell their every secret. What happens when someone else finds such a diary? That would freak out the dairy's owner for sure. Also, it might put their lives in danger. Wise men always hide their diaries so no one else finds it.  But legends hide their message so that only they can read what they wrote. So even if the diary is found by someone else, they cannot know the secrets. for example, I wrote this in my diary today.   P dyval h isvn wvza hivba jyfwavnyhwof avkhf Can you understand it? This is just a very primitive level of cryptography yet powerful enough to hide what I wrote from 90% of people. I will discuss this type of cryptography in the next blog post. The human used cryptography from the very beginning to share their messages in secret and conceal their inventions. As you may know, many people tried to find a recip...

Generate all possible phone numbers with Python | Generates Crores of Phone Numbers within minutes.

Recently,  I learned about itertools in python. Especially, about the functions permutations, combinations, and products and I tried to make a script that generates all phone numbers in our country. I bet your phone number is too on the list. let the hack begin!!! First, you need to install itertools in your computer  Simply open your terminal and type                sudo apt-get  install  -y python-more- itertools Then Write the code below from itertools import product file_name = "phonebook.txt" phonebook = open (file_name, 'a' ) prefixes = [ '+9471' ] product_a = product([ '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '0' ], [ '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '0' ], [ '1' , '2' , '3' , '4' , '5...