/* pretty crap */ public static IEnumerable <T> Shuffle <T>(this IEnumerable <T> ts, Thirdparty.Random random) { var items = ts.ToList(); while (items.Count > 0) { var t = items.Random(random); yield return(t); items.Remove(t); } }
static IEnumerable <CPos> RandomWalk(CPos p, Thirdparty.Random r) { for (; ;) { var dx = r.Next(-1, 2); var dy = r.Next(-1, 2); if (dx == 0 && dy == 0) { continue; } p += new CVec(dx, dy); yield return(p); } }
static IEnumerable <int2> RandomWalk(int2 p, Thirdparty.Random r) { for (; ;) { var dx = r.Next(-1, 2); var dy = r.Next(-1, 2); if (dx == 0 && dy == 0) { continue; } p.X += dx; p.Y += dy; yield return(p); } }