|
此文章由 joerkky 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 joerkky 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 joerkky 于 2013-3-26 12:21 编辑
为了证明这样下注能赢钱,simulation来啦
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test
{
class Rng
{
private Random _random = new Random(DateTime.Now.Millisecond);
public int WinCount { get; private set; }
public int LoseCount { get; private set; }
public bool Win()
{
if(_random.Next(0, 2) == 0)
{
WinCount++;
return true;
}
LoseCount++;
return false;
}
}
class Person
{
public Person(Rng rng, int initialCash)
{
_rng = rng;
_cash = initialCash;
}
private readonly Rng _rng;
private int _cash;
public bool IsBankrupted
{
get { return _cash <= 0; }
}
public bool Bet(int i)
{
var result = _rng.Win();
if (result)
_cash += i;
else
_cash -= i;
Console.WriteLine("Bet {0}, {1}. Cash: {2}", i, result ? "Win" : "Lose", _cash);
return result;
}
}
class Program
{
static void Main(string[] args)
{
var rng = new Rng();
// Set pocket money to be $100
var person = new Person(rng, 100);
for(int i=0;i<100;i++)
{
Console.WriteLine("Round {0}:", i + 1);
// Bet $5
var bet = 5;
person.Bet(bet);
if (person.IsBankrupted)
{
Console.WriteLine("Bankrupted!");
break;
}
// Double up bet if lose
while (!person.Bet(bet = bet * 2))
{
}
}
Console.WriteLine("Win: {0}, Lose: {1}", rng.WinCount, rng.LoseCount);
Console.Read();
}
}
}
|
|