



"""simple docstring"""







from math import factorial



def      __UpperCAmelCase      (    __lowerCamelCase						,     __lowerCamelCase						,     __lowerCamelCase	)							->      Optional[int]:
		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(__lowerCamelCase						,     __lowerCamelCase	) or not isinstance(__lowerCamelCase						,     __lowerCamelCase	):
				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'''	)
		lowercase__   :    int				=			(prob**successes) * ((1 - prob) ** (trials - successes))
		# Calculate the binomial coefficient: n! / k!(n-k)!
		lowercase__   :    int				=			float(factorial(__lowerCamelCase	)	)
		coefficient /= factorial(__lowerCamelCase	) * 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))




def   _SCREAMING_SNAKE_CASE	( SCREAMING_SNAKE_CASE       ):
  if not nums:  # Makes sure that the list is not empty
    raise ValueError('''List is empty'''       )

  A_      :				Optional[int]		     =					sum(SCREAMING_SNAKE_CASE       ) / len(SCREAMING_SNAKE_CASE       )  # Calculate the average
  return sum(abs(x - average       ) for x in nums       ) / len(SCREAMING_SNAKE_CASE       )


if __name__ == "__main__":
     import doctest

     doctest.testmod()




