

"""simple docstring"""


from math import factorial






def     a__    (    __SCREAMING_SNAKE_CASE					, __SCREAMING_SNAKE_CASE					, __SCREAMING_SNAKE_CASE )	->	float:
		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(__SCREAMING_SNAKE_CASE					, __SCREAMING_SNAKE_CASE ) or not isinstance(__SCREAMING_SNAKE_CASE					, __SCREAMING_SNAKE_CASE ):
				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" )
		__lowerCAmelCase:       str          =			(prob**successes) * ((1 - prob) ** (trials - successes))
		# Calculate the binomial coefficient: n! / k!(n-k)!
		__lowerCAmelCase:       Dict          =			float(factorial(__SCREAMING_SNAKE_CASE ) )
		coefficient /= factorial(__SCREAMING_SNAKE_CASE ) * 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.75))





"""simple docstring"""


from numpy import exp, pi, sqrt






def     a__    (    __SCREAMING_SNAKE_CASE					, __SCREAMING_SNAKE_CASE = 0.0					, __SCREAMING_SNAKE_CASE = 1.0 )	->	int:
		return 1 / sqrt(2 * pi * sigma**2 ) * exp(-((x - mu) ** 2) / (2 * sigma**2) )


if __name__ == "__main__":
			import doctest

			doctest.testmod()


