Esempio n. 1
0
        internal Expression Generate(Expression parent, int level, Random rand)
        {
            Expression ret = null;

            if (level == 0)
            {
                if (!g)
                {
                    ret = new VariableExpression();
                    g   = true;
                }
                else
                {
                    ret = new ConstantExpression();
                    ret.Generate(this, level, rand);
                }
            }
            else
            {
                ret = (Expression)Activator.CreateInstance(ExpressionTypes[rand.Next(0, ExpressionTypes.Length)]);
                ret.Generate(this, level - 1, rand);
            }
            ret.Parent = parent;
            return(ret);
        }
Esempio n. 2
0
        internal Expression Generate(Expression parent, int level, Random rand)
        {
            Expression ret = null;

            if (level == 0)
            {
                if (!g)
                {
                    ret = new VariableExpression();
                    g   = true;
                }
                else
                {
                    // Generate a new random number (constant).
                    ret = new ConstantExpression();
                    ret.Generate(this, level, rand);
                }
            }
            else
            {
                // Instead generate a new expression.
                // This leads to multiple expressions in the same root expression.
                ret = (Expression)Activator.CreateInstance(ExpressionTypes[rand.Next(0, ExpressionTypes.Length)]);
                ret.Generate(this, level - 1, rand);
            }
            ret.Parent = parent;
            return(ret);
        }