using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SharesAttack
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter the number of honest shares: ");
var honest = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.Write("Enter the number of shares you can buy: ");
var moneyAllocation = int.Parse(Console.ReadLine());
Console.WriteLine();
const int Trials = 10000;
int unjustOwnedTBs = 0;
for (int i = 0; i < Trials; ++i)
{
var moneyLeft = moneyAllocation;
var totalNow = honest;
while (moneyLeft > 0)
{
var wouldBeChosen
= rand.
Next(totalNow
); while (wouldBeChosen < honest && moneyLeft > 0)
{
--moneyLeft;
++totalNow;
wouldBeChosen
= rand.
Next(totalNow
); }
if (wouldBeChosen >= honest)
++unjustOwnedTBs;
}
}
Console.WriteLine("Average unjust owned TB sequence until the fund is depleted: {0}", (double)unjustOwnedTBs / Trials);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0OwoKbmFtZXNwYWNlIFNoYXJlc0F0dGFjawp7CiAgY2xhc3MgUHJvZ3JhbQogIHsKICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgIHsKICAgICAgQ29uc29sZS5Xcml0ZSgiRW50ZXIgdGhlIG51bWJlciBvZiBob25lc3Qgc2hhcmVzOiAiKTsKICAgICAgdmFyIGhvbmVzdCA9IGludC5QYXJzZShDb25zb2xlLlJlYWRMaW5lKCkpOwogICAgICBDb25zb2xlLldyaXRlTGluZSgpOwogICAgICBDb25zb2xlLldyaXRlKCJFbnRlciB0aGUgbnVtYmVyIG9mIHNoYXJlcyB5b3UgY2FuIGJ1eTogIik7CiAgICAgIHZhciBtb25leUFsbG9jYXRpb24gPSBpbnQuUGFyc2UoQ29uc29sZS5SZWFkTGluZSgpKTsKICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoKTsKICAgICAgY29uc3QgaW50IFRyaWFscyA9IDEwMDAwOwogICAgICB2YXIgcmFuZCA9IG5ldyBSYW5kb20oKTsKICAgICAgaW50IHVuanVzdE93bmVkVEJzID0gMDsKCiAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVHJpYWxzOyArK2kpCiAgICAgIHsKICAgICAgICB2YXIgbW9uZXlMZWZ0ID0gbW9uZXlBbGxvY2F0aW9uOwogICAgICAgIHZhciB0b3RhbE5vdyA9IGhvbmVzdDsKCiAgICAgICAgd2hpbGUgKG1vbmV5TGVmdCA+IDApCiAgICAgICAgewogICAgICAgICAgdmFyIHdvdWxkQmVDaG9zZW4gPSByYW5kLk5leHQodG90YWxOb3cpOwogICAgICAgICAgd2hpbGUgKHdvdWxkQmVDaG9zZW4gPCBob25lc3QgJiYgbW9uZXlMZWZ0ID4gMCkKICAgICAgICAgIHsKICAgICAgICAgICAgLS1tb25leUxlZnQ7CiAgICAgICAgICAgICsrdG90YWxOb3c7CiAgICAgICAgICAgIHdvdWxkQmVDaG9zZW4gPSByYW5kLk5leHQodG90YWxOb3cpOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICh3b3VsZEJlQ2hvc2VuID49IGhvbmVzdCkKICAgICAgICAgICAgKyt1bmp1c3RPd25lZFRCczsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJBdmVyYWdlIHVuanVzdCBvd25lZCBUQiBzZXF1ZW5jZSB1bnRpbCB0aGUgZnVuZCBpcyBkZXBsZXRlZDogezB9IiwgKGRvdWJsZSl1bmp1c3RPd25lZFRCcyAvIFRyaWFscyk7CiAgICB9CiAgfQp9Cg==