/// <summary>Updates the record and calculate the winning chance if possible.</summary> public void Update(GameState state, MT19937Generator rnd) { foreach (var record in this.Where(r => state.Round == r.Round)) { record.Update(state, rnd); } }
public void Distribution_SomRuns_ShouldBeFairlyEqual() { var distribution = new Dictionary <Card, int[]>(); foreach (var card in Cards.Deck) { distribution[card] = new int[9]; } var runs = 52 * 100; var rnd = new MT19937Generator(17); for (var run = 0; run < runs; run++) { var shuffle = Cards.GetShuffledDeck(rnd); var i = 0; foreach (var card in shuffle.Take(9)) { distribution[card][i++]++; } } foreach (var kvp in distribution) { Console.WriteLine("{0}\t{1}", kvp.Key, String.Join("\t", kvp.Value)); } }
public GameAction Action(GameState state, MT19937Generator rnd) { if (state.Own.Stack <= 0) { } var pWin = PokerHandEvaluator.Calculate(state.Own.Hand, state.Table, rnd, 10); // Only play doable small blinds. if (state.IsPreFlop && pWin < 0.4 && state.AmountToCall > 0) { return(GameAction.Fold); } if (state.MaxinumRaise > 0) { if (pWin > 0.55 && state.AmountToCall == 0) { return(GameAction.Raise(state.MaxinumRaise)); } if (pWin > 0.7) { return(GameAction.Raise(state.MaxinumRaise)); } } if (pWin < 0.35 && state.AmountToCall > 0) { return(GameAction.Fold); } return(GameAction.CheckOrCall(state)); }
static void Main(string[] args) { var rnd = new MT19937Generator(); while (true) { Console.WriteLine("[M]manual - [R]andom - Monte [C]arlo - [Q]uit"); bool valid = false; while (!valid) { valid = true; switch (Console.ReadKey().Key) { case ConsoleKey.R: Play(rnd, new RandomSolver(rnd), TimeSpan.Zero, 100000, false, @"C:\code\game-2048\logs\randomsolver.log"); break; case ConsoleKey.C: Play(rnd, new MonteCarloSolver(rnd), TimeSpan.FromMilliseconds(50), 200, false, @"C:\code\game-2048\logs\MonteCarloSolver.log"); break; case ConsoleKey.M: PlayManual(rnd); break; case ConsoleKey.Q: return; default: valid = false; break; } } } }
public List <BattlePairing> GetPairings(MT19937Generator rnd) { lock (locker) { var best = GetHighestElo(); var stable = GetHighestStableElo(); var pairings = new List <BattlePairing>(); // if the best is not the best stable, only pair the top unstable. if (best != stable && stable != null) { foreach (var bot in GetUnstable().Where(b => b.Elo >= stable.Elo)) { pairings.AddRange(PairOther(bot)); } } else { // Pair best. pairings.AddRange(PairOther(best)); // Pair random. pairings.AddRange(GetRandomPairings(rnd)); // Pair unstable. foreach (var bot in GetUnstable()) { pairings.AddRange(PairOther(bot)); } } return(pairings); } }
private Cell[] WorkerAsynchronousEvolutionStep(int row, int colFrom, int colTo) { AbstractGenerator randomGenerator = new MT19937Generator(); Cell cell; IEnumerable <Cell> neighborhood; Tuple <Cell, Cell> parents; Cell offspring; int index = 0; Cell[] result = new Cell[colTo - colFrom]; for (int col = colFrom; col < colTo; col++) { cell = GetAt(row, col); neighborhood = GetNeighborhood(row, col, NeighborhoodSelectionMethod); parents = Operators.SelectParents(neighborhood); offspring = Operators.Reproduction(col, row, parents, randomGenerator); if (ReplaceMethod == ReplaceType.ReplaceWorstInNeighbourhood) { offspring.ToReplace = neighborhood.First(n => n.GetFitness() == neighborhood.Min(x => x.GetFitness())).Location; } else if (ReplaceMethod == ReplaceType.ReplaceOneParent) { offspring.ToReplace = randomGenerator.NextBoolean() ? parents.Item1.Location : parents.Item2.Location; } result[index++] = offspring; } return(result); }
/// <summary>Starts a new round.</summary> /// <param name="rnd"> /// The randomizer to shuffle the deck. /// </param> public bool StartNewRound(MT19937Generator rnd) { this.Round++; var deck = Cards.GetShuffledDeck(rnd); this.Player1.Hand = Cards.Create(deck.Take(4)); this.Player2.Hand = Cards.Create(deck.Skip(4).Take(4)); this.Table = Cards.Create(deck.Skip(8).Take(5)); this.OnButton = this.OnButton.Other(); if (this.Round > 1 && this.Round % HandsPerLevel == 1) { this.SmallBlind += 5; } if (Player1.Stack < BigBlind || Player2.Stack < BigBlind) { return(false); } Button.Post(this.SmallBlind); Blind.Post(this.BigBlind); return(true); }
private MT19937Seed() { // Get a random number for the seed MT19937Generator r = new MT19937Generator(); StringBuilder sb = new StringBuilder(); const Int32 SEED_STRING_LENGTH = 20; const String SEED_STRING_CHARACTERS = "1234567890"; for (Int32 index = 0; index < SEED_STRING_LENGTH; ++index) { sb.Append(SEED_STRING_CHARACTERS[r.Next(0, SEED_STRING_CHARACTERS.Length)]); } String seedString = sb.ToString(); Byte[] seedStringArray = Encoding.ASCII.GetBytes(seedString); Byte[] hashArray = MT19937Seed.mSha512.ComputeHash(seedStringArray); MT19937Generator random = new MT19937Generator(hashArray.ToUInt32Array()); String alpha26Seed = seedString.ToUInt64Hash().ToAlphaBase26(); this.mRandom = random; this.mSeedAlphaBase26 = alpha26Seed; this.mSeedString = seedString; }
private async void AnimatedLoot() { MT19937Generator rand; if (SEED_VALUE_GLOBAL != -1) { rand = new MT19937Generator(SEED_VALUE_GLOBAL); } else { rand = new MT19937Generator(); } lbl_processing.Visible = false; for (int itemCount = 0; itemCount < num_nbrOfItems.Value; itemCount++) { GenerateASingleItem(rand); if (itemCount != num_nbrOfItems.Value - 1) { await Task.Delay(1000); } } lbl_processing.Visible = true; }
public Bot[] CreatePair(MT19937Generator rnd, double k) { var bots = new Bot[2]; var f = rnd.Next(2); var s = f == 1 ? 0 : 1; var selected = GetSelectedBot(); if (selected != null) { bots[f] = selected; bots[s] = this.GetActive().Where(bot => !bot.IsSelected).OrderBy(bot => rnd.Next()).FirstOrDefault(); return(bots); } var stable = GetStable(k).ToList(); var unstable = GetUnstable(k).ToList(); // pair a stable and an unstabel if (stable.Count > 0 && unstable.Count > 0) { bots[f] = stable[rnd.Next(stable.Count)]; bots[s] = unstable[rnd.Next(unstable.Count)]; } else { var random = GetActive().OrderBy(b => rnd.Next()).ToList(); bots[f] = random[0]; bots[s] = random[1]; } return(bots); }
internal MemoryStream EncodeMdf(Stream stream, string key, uint?keyLength) { //var bts = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes("1232ab23478cdconfig_info.psb.m")); var bts = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(key)); uint[] seeds = new uint[4]; seeds[0] = BitConverter.ToUInt32(bts, 0); seeds[1] = BitConverter.ToUInt32(bts, 1 * 4); seeds[2] = BitConverter.ToUInt32(bts, 2 * 4); seeds[3] = BitConverter.ToUInt32(bts, 3 * 4); MemoryStream ms = new MemoryStream((int)stream.Length); var gen = new MT19937Generator(seeds); BinaryReader br = new BinaryReader(stream); BinaryWriter bw = new BinaryWriter(ms, Encoding.UTF8, true); bw.Write(br.ReadBytes(8)); //uint count = 0; List <byte> keys = new List <byte>(); if (keyLength != null) { for (int i = 0; i < keyLength / 4 + 1; i++) { keys.AddRange(BitConverter.GetBytes(gen.NextUIntInclusiveMaxValue())); } keys = keys.Take((int)keyLength.Value).ToList(); } else { while (keys.Count < br.BaseStream.Length) { keys.AddRange(BitConverter.GetBytes(gen.NextUIntInclusiveMaxValue())); } } int currentKey = 0; while (br.BaseStream.Position < br.BaseStream.Length) { var current = br.ReadByte(); if (currentKey >= keys.Count) { currentKey = 0; } current ^= keys[currentKey]; currentKey++; //if (keyLength == null || (count < keyLength.Value)) //{ // current ^= gen.NextUIntInclusiveMaxValue(); //} bw.Write(current); } return(ms); }
public NodeDecisionMaker(MT19937Generator rnd) { MaximumDepth = int.MaxValue; MinimumDuration = TimeSpan.MaxValue; MaximumDuration = TimeSpan.MaxValue; Rnd = rnd; }
public void Calculate(MT19937Generator rnd) { // if a hand was revealed, calculate the winning change. if (this.HandOpp != null && this.HandOpp.Count > 0 && double.IsNaN(WinningChance)) { this.WinningChance = 1.0 - PokerHandEvaluator.Calculate(this.HandOpp, this.Table ?? Cards.Empty, rnd, 200); } }
/// <summary>Gets a new shuffled deck.</summary> public static Cards GetShuffledDeck(MT19937Generator rnd = null) { var deck = Cards.Empty; rnd = rnd ?? s_Rnd; deck.AddRange(Deck.OrderBy(c => rnd.Next())); return(deck); }
/// <summary>Update a record.</summary> public void Update(GameState state, MT19937Generator rnd) { if (state.Opp.Hand.Count > 0) { this.HandOpp = state.Opp.Hand.Copy(); } Calculate(rnd); }
public AppState(string id, DirectoryInfo location, NameTypes nameTypes) { Id = string.IsNullOrWhiteSpace(id) ? "Unknown" : id; Location = location ?? new DirectoryInfo("."); NameTypes = nameTypes; CurrentNameType = nameTypes.IsSingleGender() ? nameTypes : NameTypes.Boys; Rnd = new MT19937Generator(); OwnBoyVetos = new List <Name>(Vetos.Load(Path.Combine(Location.FullName, Id + ".boys.vetos.txt")).Select(n => (Name)n)); OwnGirlVetos = new List <Name>(Vetos.Load(Path.Combine(Location.FullName, Id + ".girls.vetos.txt")).Select(n => (Name)n)); }
public void Defender_is_None_on_successfull_attack() { var rnd = new MT19937Generator(17); var attacker = Player.P1.Army(10); var defender = Player.P2.Army(5); var result = Dice.AutoAttack(attacker, defender, rnd); Assert.IsTrue(result.IsSuccess); Assert.AreEqual(new AttackResult(Player.P1.Army(9), Army.None), result); }
void Mt21_5() { var rnd = new MT19937Generator(new uint[] { 3812420242, 459506247, 2183839257, 580200489, 2015677638, 927419777, 441890165, 2639697008, 2119246415, 1824953119, 2556517629, 704541974 }); var list = new List <double>(); for (int i = 0; i < 10; i++) { list.Add(scaleInt2(rnd.NextDouble())); } Assert.Equal(10, list.Count()); }
void Mt24() { var rnd = new MT19937Generator(34); var list = new List <double>(); for (int i = 0; i < 10; i++) { list.Add(rnd.NextUIntInclusiveMaxValue()); } Assert.Equal(10, list.Count()); }
private void precomputeSeeds(int seed, int amount) { var g = new MT19937Generator(seed); ContinuousUniformDistribution rand = new ContinuousUniformDistribution(g); seedList = new int[amount]; for (int i = 0; i < seedList.Length; i++) { seedList[i] = (int)(rand.NextDouble() * MAX); } }
public void GetMoveResult_Performance() { var rnd = new MT19937Generator(17); var board = Board.Initial(rnd); var solver = new MonteCarloSolver(rnd); var result = solver.Move(board, TimeSpan.FromSeconds(1)); Console.WriteLine(result); }
void Mt() { var rnd = new MT19937Generator(new uint[] { 1, 2, 3 }); var list = new List <int>(); for (int i = 0; i < 10; i++) { list.Add(rnd.Next(1, 7)); } Assert.Equal(10, list.Count()); }
public static Int64[] Generate(IList <int> seed, int count, long max) { var arr = new Int64[count]; var rnd = new MT19937Generator(seed); for (int i = 0; i < count; i++) { arr[i] = Convert.ToInt64(rnd.NextDouble(1, max)); } return(arr); }
public void Defender_has_armies_on_nonsuccessfull_attack() { var rnd = new MT19937Generator(14); var attacker = Player.P1.Army(10); var defender = Player.P2.Army(8); var result = Dice.AutoAttack(attacker, defender, rnd); Assert.IsFalse(result.IsSuccess); Assert.AreEqual(new AttackResult(Player.P1.Army(3), Player.P2.Army(3)), result); }
public BattleSimulator(MT19937Generator rnd) { File = new FileInfo("parameters.xml"); SearchDepth = AppConfig.Data.SearchDepth; Rnd = rnd; Randomizer = new ParameterRandomizer(rnd); Bots = new Bots(); Results = new ConcurrentQueue <BattlePairing>(); }
void Mt21_2() { var rnd = new MT19937Generator(new[] { 1, 2, 3 }); var list = new List <double>(); for (int i = 0; i < 10; i++) { list.Add(rnd.NextUInt()); } Assert.Equal(10, list.Count()); }
public KubismeBot(MT19937Generator rnd) { DecisionMaker = new NodeDecisionMaker(rnd) { Evaluator = new Evaluator(), Generator = new MoveGenerator(), MaximumDepth = 10, MaximumDuration = TimeSpan.FromMilliseconds(700), DefaultEvaluation = EvaluatorParameters.GetDefault(), }; }
public void Calculate_Tc9c8dQhTable3_AreEqual() { var rnd = new MT19937Generator(17); var hand = Cards.Parse("[Tc,9c,8d,Qh]"); var table = Cards.Parse("[Jc,2d,4s]"); //var ch = OmahaHand.Calculate(hand, table, 1024, rnd); var ch = PokerHandEvaluator.Calculate(hand, table, rnd, 100000); Assert.AreEqual(0.309, ch, 0.01); }
public void Calculate_AcAdKCKdTable0_AreEqual() { var rnd = new MT19937Generator(17); var hand = Cards.Parse("[Ac,Ad,Kc,Kd]"); var table = Cards.Empty; //var ch = OmahaHand.Calculate(hand, table, 1024, rnd); var ch = PokerHandEvaluator.Calculate(hand, table, rnd, 100000); Assert.AreEqual(0.706, ch, 0.01); }
public void Calculate_Tc9c8dQhTable5_AreEqual() { var rnd = new MT19937Generator(17); var hand = Cards.Parse("[Tc,9c,8d,Qh]"); var table = Cards.Parse("[Qd,Jc,2d,4s,3h]"); var ch = PokerHandEvaluator.Calculate(hand, table, rnd, 100000); Assert.AreEqual(0.382, ch, 0.01); AssertPokerHandOutcome(0.372, 0.008, 0.615, ch); }