public Vector2 GetRandomFringePoint() { WeightedRandom wr = new WeightedRandom(); foreach (CircleNode node in fringe) { foreach (Slice slice in node.freeSlices) { wr.AddRange(/* TODO: slice min, slice max, slice length*/) } } float result = wr.GetFloat(); return(result); }