Скажем, что я знаю, что вероятность "успеха" - это P. Я выполняю тест N раз, и я вижу успехи S. Тест сродни бросанию неравномерно взвешенной монеты (возможно, голова - это успех, хвосты - провал).
Я хочу знать приблизительную вероятность увидеть либо успехи S, либо несколько успехов, менее вероятных, чем S успехов.
Так, например, если P равно 0,3, N равно 100, и я получаю 20 успехов, я ищу вероятность получить 20 или меньше успехов.
Если, с другой стороны, P равно 0.3, N равно 100, и я получаю 40 успехов, я ищу вероятность получить 40 наших дальнейших успехов.
Я знаю, что эта проблема связана с поиском области под биномиальной кривой:
- Моя математика-фу не связана с задачей перевода этих знаний в эффективный код.
- Хотя я понимаю, что биномиальная кривая даст точный результат, у меня создается впечатление, что она по сути своей неэффективна. Быстрого метода вычисления приблизительного результата будет достаточно.
Я должен подчеркнуть, что это вычисление должно быть быстрым и в идеале должно быть определено при стандартном вычислении с плавающей запятой 64 или 128 бит.
Я ищу функцию, которая принимает P, S и N - и возвращает вероятность. Поскольку я более знаком с кодом, чем с математической нотацией, я бы предпочел, чтобы в любых ответах использовался псевдокод или код.