, предполагающих следующий эксперимент: Выполнить же испытание Бернулли (с вероятностью успеха P) N количества разКак получить подробные результаты (вероятность дерева) выполнений Бернулли эксперимент большого числа раз
I нужна следующая информация: все возможные последовательности успеха/неудачи с его вероятностью.
Пример: Бернулли эксперимент с вероятностью успеха P = 40% выполненный в 3 раза бы дают следующие результаты (S имеет успех, Р сбой):
FFF 0,216
SFF 0,144
FSF 0,144
SSF 0,096
ФФС 0,144
SFS 0,096
ФСС 0,096
SSS 0,064
Я пытался BruteForce его, чтобы получить результаты, но он быстро дроссели только с N = 25 , Я получаю OutOfMemoryException ...
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace ConsoleApplication
{
class Program
{
static Dictionary<string, double> finalResultProbabilities = new Dictionary<string, double>();
static void Main(string[] args)
{
// OutOfMemoryException if I set it to 25 :(
//var nbGames = 25;
var nbGames = 3;
var probabilityToWin = 0.4d;
CalculateAverageWinningStreak(string.Empty, 1d, nbGames, probabilityToWin);
// Do something with the finalResultProbabilities data...
}
static void CalculateAverageWinningStreak(string currentResult, double currentProbability, int nbGamesRemaining, double probabilityToWin)
{
if (nbGamesRemaining == 0)
{
finalResultProbabilities.Add(currentResult, currentProbability);
return;
}
CalculateAverageWinningStreak(currentResult + "S", currentProbability * probabilityToWin, nbGamesRemaining - 1, probabilityToWin);
CalculateAverageWinningStreak(currentResult + "F", currentProbability * (1 - probabilityToWin), nbGamesRemaining - 1, probabilityToWin);
}
}
}
мне нужно, чтобы быть в состоянии поддерживать до N = 3000 своевременно (получение результата менее чем за 3 секунды для любого P)
Есть математический способ сделать это оптимально?
Почему вы хотите сохранить * все * результаты? 'P (F ... S ... F ... S) == P (S) ** (число S) * P (F) ** (число F)' –
@DmitryBychenko Мне нужно найти среднее значение самой длинной победной полосы (например, делая 0.216 * 0 + 0.144 * 1 + 0.144 * 1 + 0.096 * 2 + 0.144 * 1 + 0.096 * 1 + 0.096 * 2 + 0.064 * 3 = 1.104) – ibiza