Esempio n. 1
0
            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;
                    }
                }
            }
Esempio n. 2
0
            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);
                    }
                }
            }