from math import factorial



def lowerCamelCase    (  SCREAMING_SNAKE_CASE    ,     SCREAMING_SNAKE_CASE    ,     SCREAMING_SNAKE_CASE      ):
    '''simple docstring'''







    if successes > trials:
        raise ValueError('''successes must be lower or equal to trials'''      )
    if trials < 0 or successes < 0:
        raise ValueError('''the function is defined for non-negative integers'''      )
    if not isinstance(lowercase_    ,     lowercase_      ) or not isinstance(lowercase_    ,     lowercase_      ):
        raise ValueError('''the function is defined for non-negative integers'''      )
    if not 0 < prob < 1:
        raise ValueError('''prob has to be in range of 1 - 0'''      )
    __UpperCamelCase	:str         =						(prob**successes) * ((1 - prob) ** (trials - successes))
    # Calculate the binomial coefficient: n! / k!(n-k)!
    __UpperCamelCase	:List[str]         =						float(factorial(lowercase_      )      )
    coefficient /= factorial(lowercase_      ) * factorial(trials - successes      )
    return probability * coefficient


if __name__ == "__main__":
    from doctest import testmod

    testmod()
    print('''Probability of 2 successes out of 4 trails''')
    print('''with probability of 0.75 is:''', end=''' ''')
    print(binomial_distribution(2, 4, 0.7_5))









import inspect
import os
import sys
import unittest

import accelerate
from accelerate.test_utils import execute_subprocess_async, require_tpu




class 							lowerCamelCase   (  unittest.TestCase ):


	def  A(    self):
							__UpperCAmelCase			:							List[Any]	    =	inspect.getfile(accelerate.test_utils)
							__UpperCAmelCase			:							Dict	    =	os.path.sep.join(mod_file.split(os.path.sep)[:-1] + ['''scripts''', '''test_script.py'''])
							__UpperCAmelCase			:							Union[str, Any]	    =	os.path.sep.join(inspect.getfile(self.__class__).split(os.path.sep)[:-1])


	@require_tpu
	def  A(    self):
							__UpperCAmelCase			:							Dict	    =	F"\n            {self.test_dir}/xla_spawn.py\n            --num_cores 8\n            {self.test_file_path}\n        ".split()
							__UpperCAmelCase			:							Union[str, Any]	    =	[sys.executable] + distributed_args
							execute_subprocess_async(lowercase__				,     env=os.environ.copy())

