private void random_child(Agent pAgent) { Debug.Check(this.GetNode() == null || this.GetNode() is CompositeStochastic); CompositeStochastic pNode = (CompositeStochastic)(this.GetNode()); int n = this.m_children.Count; if (this.m_set.Count != n) { this.m_set.Clear(); for (int i = 0; i < n; ++i) { this.m_set.Add(i); } } for (int i = 0; i < n; ++i) { int index1 = (int)(n * GetRandomValue(pNode != null ? pNode.m_method : null, pAgent)); Debug.Check(index1 < n); int index2 = (int)(n * GetRandomValue(pNode != null ? pNode.m_method : null, pAgent)); Debug.Check(index2 < n); //swap if (index1 != index2) { int old = this.m_set[index1]; this.m_set[index1] = this.m_set[index2]; this.m_set[index2] = old; } } }
private void random_child(Agent pAgent) { CompositeStochastic node = (CompositeStochastic)base.GetNode(); int count = base.m_children.Count; if (this.m_set.Count != count) { this.m_set.Clear(); for (int j = 0; j < count; j++) { this.m_set.Add(j); } } for (int i = 0; i < count; i++) { int num4 = (int)(((long)(count * GetRandomValue((node == null) ? null : node.m_method, pAgent))) / ((ulong)RandomMax)); int num5 = (int)(((long)(count * GetRandomValue((node == null) ? null : node.m_method, pAgent))) / ((ulong)RandomMax)); if (num4 != num5) { int num6 = this.m_set[num4]; this.m_set[num4] = this.m_set[num5]; this.m_set[num5] = num6; } } }
private void random_child(Agent pAgent) { CompositeStochastic compositeStochastic = (CompositeStochastic)base.GetNode(); int count = this.m_children.Count; if (this.m_set.get_Count() != count) { this.m_set.Clear(); for (int i = 0; i < count; i++) { this.m_set.Add(i); } } for (int j = 0; j < count; j++) { int num = (int)((long)(count * CompositeStochastic.CompositeStochasticTask.GetRandomValue((compositeStochastic != null) ? compositeStochastic.m_method : null, pAgent)) / (long)((ulong)CompositeStochastic.CompositeStochasticTask.RandomMax)); int num2 = (int)((long)(count * CompositeStochastic.CompositeStochasticTask.GetRandomValue((compositeStochastic != null) ? compositeStochastic.m_method : null, pAgent)) / (long)((ulong)CompositeStochastic.CompositeStochasticTask.RandomMax)); if (num != num2) { int num3 = this.m_set.get_Item(num); this.m_set.set_Item(num, this.m_set.get_Item(num2)); this.m_set.set_Item(num2, num3); } } }