using System.Security.Cryptography;
public static void Main()
var neutralProba = 0.802707m;
var operatorMargin = 1.08m;
var targetMargin = 1.05m;
for (int i = 0; i < runNumber; i++)
var oddsWithRepartition = 1 / (neutralProba * operatorMargin);
var ratio = odds / oddsWithRepartition;
var targetProba = neutralProba * oddsWithRepartition / targetMargin * ratio;
var bytes = RandomNumberGenerator.GetBytes(8);
var random = (decimal)BitConverter.ToUInt64(bytes, 0) / ulong.MaxValue * 1.0m;
if (random <= targetProba)
paidAmount += stake * odds;
Console.WriteLine("Won / Lost: {0} / {1}", wonNumber, runNumber - wonNumber);
Console.WriteLine("GGR: {0}", totalStake - paidAmount);
Console.WriteLine("RTP: {0}", paidAmount / totalStake);