Untitled
unknown
csharp
a year ago
1.5 kB
5
Indexable
namespace Test;
internal static class Program
{
private static void Main(string[] _)
{
const int NUMBER_OF_TRIES = 10000000;
int sumTwoHeads = 0;
int sumHeadTail = 0;
for (int i = 0; i < NUMBER_OF_TRIES; i++)
{
sumTwoHeads += Solve((firstResult, secondResult) => firstResult is FlipResult.Heads && secondResult is FlipResult.Heads);
sumHeadTail += Solve((firstResult, secondResult) => firstResult is FlipResult.Heads && secondResult is FlipResult.Tails);
}
double expectationTwoHeads = (float)sumTwoHeads / NUMBER_OF_TRIES;
double expectationHeadTail = (float)sumHeadTail / NUMBER_OF_TRIES;
Console.WriteLine("В среднем для орёл-орёл: " + expectationTwoHeads);
Console.WriteLine("В среднем для орёл-решка: " + expectationHeadTail);
}
private static int Solve(Func<FlipResult?, FlipResult, bool> predicate)
{
Random random = new Random();
int counter = 0;
FlipResult? previousResult = null;
while (true)
{
FlipResult result = (FlipResult)(random.Next() % 2);
counter++;
if (predicate(previousResult, result))
{
break;
}
previousResult = result;
}
return counter;
}
}
internal enum FlipResult
{
Heads = 0,
Tails = 1
}Editor is loading...