Пример #1
0
        //public static string CreatePrettyLabel(int length, LabelType type)
        //{
        //    return New().CreatePrettyLabel_nonstatic(length, type);
        //}


        // ----------------------------------------------------------------------------------------
        /// <!-- CreatePrettyLabel -->
        /// <summary>
        ///
        /// </summary>
        /// <param name="length"></param>
        /// <returns></returns>
        public static string CreatePrettyLabel(int length, LabelType type)
        {
            //     New();
            string label;


            switch (type)
            {
            case LabelType.name: label = "Jon Grover"; break;     // DrawLabel(length, _rtNames);  break;

            case LabelType.place: label = "Indianapolis"; break;  // DrawLabel(length, _rtPlaces); break;

            case LabelType.word: label = "courage"; break;        // DrawLabel(length, _rtWords);  break;

            default:
                switch (RandomSource.New().Random.Next(3))
                {
                case 0: label = "Jon Grover"; break;       // DrawLabel(length, _rtNames);  break;

                case 1: label = "Indianapolis"; break;     // DrawLabel(length, _rtPlaces); break;

                default: label = "courage"; break;         // DrawLabel(length, _rtWords);  break;
                }
                break;
            }


            return(label);
        }
Пример #2
0
        // ----------------------------------------------------------------------------------------
        /// <!-- RandomCharacteristic -->
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        /// <remarks>production ready</remarks>
        public char RandomCharacteristic()
        {
            Random      r   = RandomSource.New().Random;
            List <char> key = new List <char>(_char.Keys);

            return(key[r.Next(key.Count)]);
        }
Пример #3
0
        // ----------------------------------------------------------------------------------------
        /// <!-- NiceName -->
        /// <summary>
        ///      Returns a usable storage file name
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        /// <remarks>beta code - used once in production</remarks>
        public static string NiceName(string path)
        {
            int sectionLength = 8;


            // --------------------------------------------------------------------------
            //  Name components
            // --------------------------------------------------------------------------
            string suffix = FilesIO.FileSuffix(path);
            string body   = FilesIO.ThinFileBody(path);
            Random r      = RandomSource.New().Random;
            string num    = r.Next(10000).ToString().PadLeft(4, '0');


            // --------------------------------------------------------------------------
            //  Construct name
            // --------------------------------------------------------------------------
            string nice = "";

            if (body.Length > sectionLength * 2)
            {
                string body1 = Regex.Replace(body, "^(.{" + sectionLength + "}).*$", "$1");
                string body2 = Regex.Replace(body, "^.*(.{" + sectionLength + "})$", "$1");

                nice = body1 + body2 + num + suffix;
            }
            else
            {
                nice = body + num + suffix;
            }


            return(nice);
        }
Пример #4
0
        // ----------------------------------------------------------------------------------------
        /// <!-- StdDeviation -->
        /// <summary>
        ///
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        /// <remarks>alpha code</remarks>
        //public static double StdDeviation(Dictionary<char, int> list)
        //{
        //    double average = list.Values.Average();
        //    double sumOfDifferencesSquared = list.Select(val => ((double)val.Value - average) * ((double)val.Value - average)).Sum();
        //    double sd = Math.Sqrt(sumOfDifferencesSquared / list.Count);
        //    return sd;
        //}
        //public static double StdDeviation(List<double> list)
        //{
        //    double average = list.Average();
        //    double sumOfDifferencesSquared = list.Select(val => ((double)val - average) * ((double)val - average)).Sum();
        //    double sd = Math.Sqrt(sumOfDifferencesSquared / list.Count);
        //    return sd;
        //}

        public static int XdY(int x, int y)
        {
            _r = RandomSource.New().Random;
            int sum = 0;

            for (int i = 0; i < x; ++i)
            {
                sum += D(y);
            }
            return(sum);
        }
Пример #5
0
        // ----------------------------------------------------------------------------------------
        /// <!-- Nd6 -->
        /// <summary>
        ///
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int Nd6(int n)
        {
            _r = RandomSource.New().Random;
            int sum = 0;

            for (int i = 0; i < n; ++i)
            {
                sum += D6;
            }
            return(sum);
        }
Пример #6
0
        // ----------------------------------------------------------------------------------------
        //  Constructors
        // ----------------------------------------------------------------------------------------
        //public Aspect(object sender, string conn, string root, int level)
        //{
        //    Sender = sender;
        //    Root   = root  ;
        //    Level  = level ;
        //    Method = new List<string>();
        //    Start  = DateTime.Now.AddMilliseconds(-100);
        //    r      = RandomSource.New().Random;


        //    InputConn  = conn;
        //    OutputConn = conn;
        //    if (!string.IsNullOrEmpty(conn))  _inputConnection  = new SqlConnection(conn);
        //    if (!string.IsNullOrEmpty(conn))  _outputConnection = new SqlConnection(conn);
        //}
        /// <summary>
        ///      Constructs a general purpose aspect
        /// </summary>
        /// <param name="project"   >name of project</param>
        /// <param name="sender"    >this or sender</param>
        /// <param name="primaryConn" >connection</param>
        /// <param name="secondaryConn">maybe the same or different than the primaryConn</param>
        /// <param name="root"      >root or working directory</param>
        /// <param name="level"     >usually starts at 0</param>
        public InfoAspect(string project, object sender, string primaryConn, string secondaryConn, string root = "", int level = 0)
        {
            Project       = project;
            Sender        = sender;
            Root          = root;
            Level         = level;
            Method        = new List <string>();
            Start         = DateTime.Now.AddMilliseconds(-100);
            r             = RandomSource.New().Random;
            PrimaryConn   = primaryConn;
            SecondaryConn = secondaryConn;
        }
        // ----------------------------------------------------------------------------------------
        /// <!-- CreatePrettyLabel -->
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        protected override string CreatePrettyLabel(string name)
        {
            string       data;
            RandomSource rs = RandomSource.New();
            //Random r = rs.Random;
            string labelType = LblType(name);   // encapsulate

            switch (labelType)
            {
            case "name": data = DbLabels.CreatePrettyLabel(rs.Skew(1, 512), LabelType.name); break;

            default: data = DbLabels.CreatePrettyLabel(rs.Skew(1, 512), LabelType.any); break;
            }
            return(data);
        }
Пример #8
0
        //// ----------------------------------------------------------------------------------------
        ///// <!-- Labels member and property -->
        ///// <remarks>
        /////      _labels is the resource that needs to be protected in this singleton
        ///// </remarks>
        //DataSet _labels;
        ///// <summary>
        /////      Accesses the database label source
        ///// </summary>
        //public DataSet Labels
        //{
        //    get { return _labels; }
        //}


        // ----------------------------------------------------------------------------------------
        /// <!-- CreateUglyLabel -->
        /// <summary>
        ///      Creates a really ugly letter string including some caps and some spaces
        /// </summary>
        /// <param name="maxLength"></param>
        /// <returns></returns>
        public static string CreateUglyLabel(int lowLength, int highLength)
        {
            if (highLength == int.MaxValue)
            {
                highLength = int.MaxValue - 1;
            }
            Random r   = RandomSource.New().Random;
            string str = CreateUglyLabel(r.Next(1, highLength + 1));

            for (int i = 0; str.Length < lowLength && i < 10; ++i)
            {
                str = CreateUglyLabel(r.Next(1, highLength + 1));
            }
            return(str);
        }
Пример #9
0
        // ----------------------------------------------------------------------------------------
        /// <!-- DrawLetter -->
        /// <summary>
        ///      Draws a character from the bag
        /// </summary>
        /// <returns></returns>
        public char DrawLetter()
        {
            char c;

            if (_bag.Count > 0)
            {
                Random r   = RandomSource.New().Random;
                int    idx = r.Next(_bag.Count);
                c = _bag[idx];
                _bag.RemoveAt(idx);
            }
            else
            {
                c = ' ';
            }
            return(c);
        }
        // ----------------------------------------------------------------------------------------
        /// <!-- CreateDate -->
        /// <summary>
        ///      Creates a date string in one of these formats:   1999-05-31-05:00    1999-05-31Z
        ///      1999-05-31    1999-05--
        /// </summary>
        /// <returns></returns>
        /// <remarks>beta code - used once in production</remarks>
        protected override string CreateDate(string name)
        {
            RandomSource rs          = RandomSource.New();
            int          hoursOffset = rs.Skew(-1000, 1000);
            DateTime     time        = DateTime.UtcNow.AddHours(hoursOffset);
            Random       r           = rs.Random;
            string       data        = "";


            switch (r.Next(2))
            {
            // case 0 : data = time.ToString("yyyy-MM--") + CreateTimeZone(r);  break;
            default: data = time.ToString("yyyy-MM-dd") + CreateTimeZone(r); break;
            }

            return(data);
        }
        // ----------------------------------------------------------------------------------------
        /// <!-- CreateDateTime -->
        /// <summary>
        ///      One of the following formats:
        /// 1999-05-31T13:20:00.01-05:00
        /// +14:00..-14:00
        /// 1999-05-31
        /// 13:20:00-05:00
        /// 1999-05
        /// --05-17
        /// ---15
        /// --11--
        /// </summary>
        /// <returns></returns>
        protected override string CreateDateTime(string name)
        {
            string       data = "";
            RandomSource rs   = RandomSource.New();
            DateTime     dtm  = DateTime.UtcNow.AddHours(rs.Skew(-100, 100));
            Random       r    = rs.Random;


            switch (r.Next(1))
            {
            case 0: data = dtm.ToString("yyyy-MM-ddTHH:mm:ss") + CreateTimeZone(r);  break;
                //case 1: data = dtm.ToString("yyyy-MM-dd")          + CreateTimeZone(r); break;
                //case 2: data = dtm.ToString("HH:mm:ss")            + CreateTimeZone(r); break;
            }

            return(data);
        }
        // ----------------------------------------------------------------------------------------
        /// <!-- CreateNumElements -->
        /// <summary>
        ///      Comes up with a random number based on the minimum and maximum bounds for a node
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        protected override int CreateNumElements(RichXmlNode node)
        {
            if (node == null)
            {
                return(-999);
            }


            string minOccurs = node.Attribute("minOccurs");  //  included minBound
            string maxOccurs = node.Attribute("maxOccurs");
            Random r         = RandomSource.New().Random;
            int    minNum    = 1;
            int    maxNum    = 1;
            int    num       = 1;


            if (node.Attribute("name") == "PV2_26")
            {
                Pause();
            }


            // --------------------------------------------------------------------------
            //  Determine number of elements to create
            // --------------------------------------------------------------------------
            if (!string.IsNullOrEmpty(minOccurs))
            {
                minNum = _gen_.Integer(minOccurs, 0);
            }
            if (!string.IsNullOrEmpty(maxOccurs))
            {
                maxNum = _gen_.Integer(maxOccurs, minNum + r.Next(1, 4) * r.Next(0, 5));
            }
            num = r.Next(minNum, maxNum + 1);


            // --------------------------------------------------------------------------
            //  If something strange happened...
            // --------------------------------------------------------------------------
            if (minNum > maxNum)
            {
                throw new ArithmeticException("XmlGenerator.NumElements error - min number greater than max number");
            }

            return(num);
        }
Пример #13
0
        // ----------------------------------------------------------------------------------------
        //  Constructors
        // ----------------------------------------------------------------------------------------
        //public Aspect(object sender, string conn, string root, int level)
        //{
        //    Sender = sender;
        //    Root   = root  ;
        //    Level  = level ;
        //    Method = new List<string>();
        //    Start  = DateTime.Now.AddMilliseconds(-100);
        //    r      = RandomSource.New().Random;


        //    InputConn  = conn;
        //    OutputConn = conn;
        //    if (!string.IsNullOrEmpty(conn))  _inputConnection  = new SqlConnection(conn);
        //    if (!string.IsNullOrEmpty(conn))  _outputConnection = new SqlConnection(conn);
        //}
        /// <summary>
        ///
        /// </summary>
        /// <param name="project"   >name of project</param>
        /// <param name="sender"    >this or sender</param>
        /// <param name="inputConn" >connection</param>
        /// <param name="outputConn">maybe the same or different than the inputConn</param>
        /// <param name="root"      >root or working directory</param>
        /// <param name="level"     >usually starts at 0</param>
        public InfoAspect(string project, object sender, string inputConn, string outputConn, string root, int level)
        {
            Project   = project;
            Sender    = sender;
            Root      = root;
            Level     = level;
            Method    = new List <string>();
            Start     = DateTime.Now.AddMilliseconds(-100);
            r         = RandomSource.New().Random;
            InputConn = inputConn; if (!string.IsNullOrEmpty(inputConn.Trim()))
            {
                _inputConnection = new SqlConnection(inputConn);
            }
            OutputConn = outputConn; if (!string.IsNullOrEmpty(outputConn.Trim()))
            {
                _outputConnection = new SqlConnection(outputConn);
            }
        }
Пример #14
0
        // ----------------------------------------------------------------------------------------
        /// <!-- CreateUglyLabel -->
        /// <summary>
        ///      Creates a really ugly letter string including some caps and some spaces
        /// </summary>
        /// <param name="length"></param>
        /// <returns></returns>
        public static string CreateUglyLabel(int length)
        {
            Random r   = RandomSource.New().Random;
            string str = "";


            for (int i = 0; i < length; ++i)
            {
                int num;
                switch (r.Next(i + 1))
                {
                case 0: num = r.Next(65, 90); break;

                case 4: num = 32; break;

                case 10: num = 95; break;

                default: num = r.Next(98, 123); break;
                }
                char cha = Convert.ToChar(num);
                str += cha;
            }
            return(str);
        }
Пример #15
0
        // ----------------------------------------------------------------------------------------
        /// <!-- SelectionBag -->
        /// <summary>
        ///      Places a bunch of marbles (chars) in a bag for random selection
        /// </summary>
        /// <param name="size">number of marbles in bag (try a multiple of 8 <= 120)</param>
        /// <returns></returns>
        private List <char> SelectionBag(Endeme e, int size)
        {
            Random r = RandomSource.New().Random;

            if (this.Count > this.OriginalCount)
            {
                throw new Exception("SelectionBag");
            }


            // ----------------------------------------------------------------
            //  Define number of each kind of marble (character)
            // ----------------------------------------------------------------
            char[] endeme = e.ToCharArray();
            string str    = "";

            switch (size)
            {
            case 128: str = "@>=;:98765544332221111"; break;

            case 120: str = "@><;987665443322221111"; break;

            case 112: str = "?=;:987654433322211111"; break;

            case 104: str = "><:9876654433222211111"; break;

            case  96: str = "=;:9776544333222111110"; break;

            case  88: str = "<:98765544332221111110"; break;

            case  80: str = ";987665443322221111110"; break;

            case  72: str = ":877654433322211111100"; break;

            case  64: str = "9876544333222111111000"; break;

            case  60: str = "8766544332222111111000"; break;

            case  56: str = "8765543332221111110000"; break;

            case  52: str = "7665443322221111110000"; break;

            case  48: str = "7655433322211111100000"; break;

            case  44: str = "6554433222211111100000"; break;

            case  40: str = "6544333222111111000000"; break;

            case  36: str = "5544332221111110000000"; break;

            case  32: str = "5433322221111110000000"; break;

            case  28: str = "4433222211111100000000"; break;

            case  24: str = "4332222111111000000000"; break;

            case  20: str = "3322221111110000000000"; break;

            case  16: str = "3222111111100000000000"; break;

            case  14: str = "2222111111000000000000"; break;

            case  12: str = "2221111110000000000000"; break;

            case  10: str = "2211111100000000000000"; break;

            case   8: str = "2111111000000000000000"; break;

            case   7: str = "2111110000000000000000"; break;

            case   6: str = "1111110000000000000000"; break;

            case   5: str = "1111100000000000000000"; break;

            case   4: str = "1111000000000000000000"; break;

            case   3: str = "1110000000000000000000"; break;

            case   2: str = "1100000000000000000000"; break;

            case   1: str = "1000000000000000000000"; break;

            default: str = "";
                Dictionary <char, int> cha = new Dictionary <char, int>(22);
                foreach (char c in endeme)
                {
                    cha.Add(c, 0);
                }
                for (int i = 0; i < size; ++i)
                {
                    cha[e.RandomLetter(0.89)]++;
                }
                var query = from ch in cha orderby cha.Values descending select cha;
                str = "";
                foreach (var item in query)
                {
                    str = str + item.ToString();
                }
                break;     // TODO: build the function that approximates these series (.89 * one before)
            }


            // ----------------------------------------------------------------
            //  Put marbles (characters) in bag
            // ----------------------------------------------------------------
            List <int>  quantity = StringToNums(str);
            List <char> bag      = new List <char>(size);

            for (int i = 0; i < quantity.Count; ++i)
            {
                for (int j = 0; j < quantity[i]; ++j)
                {
                    if (i < endeme.Length)
                    {
                        bag.Add(endeme[i]);
                    }
                    else if (endeme.Length > 0)
                    {
                        bag.Add(endeme[0]);
                    }
                }
            }


            return(bag);
        }
Пример #16
0
 public Endeme RandomEndeme()
 {
     return(RandomEndeme(RandomSource.New().Random));
 }
        // ----------------------------------------------------------------------------------------
        /// <!-- CreateString -->
        /// <summary>
        ///      Creates a string to meet a particular set of restrictions
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        protected override string CreateString(NodeCreationCommand cmd, string name)
        {
            string str = "";

            if (Regex.IsMatch(name, "amount", RegexOptions.IgnoreCase))
            {
                Pause();
            }


            // --------------------------------------------------------------------------
            //  Use the restrictions (new <--> now)
            // --------------------------------------------------------------------------
            RandomSource rs = RandomSource.New();
            Random       r  = rs.Random;

            if (cmd.Enumerations != null && cmd.Enumerations.Count > 0)
            {
                int e = r.Next(cmd.Enumerations.Count);
                str = cmd.Enumerations[e];
            }
            else
            {
                switch (cmd.MaxLength)
                {
                case -1:       // encapsulate
                    if (string.IsNullOrEmpty(cmd.RegexPattern))
                    {
                        bool found = false;       // encapsulate
                        if (!found && IsNumericField(name))
                        {
                            found = true;  str = new RegexGenerator("[0-9]").CreateString(r, rs.Skew(1, 49), cmd.WhiteSpace);
                        }
                        if (!found && IsDateTime(name))
                        {
                            found = true;  str = CreateDateTime(name);
                        }
                        if (!found)
                        {
                            str = CreatePrettyLabel(name);                // encapsulate
                        }
                    }
                    else
                    {
                        bool found = false;
                        if (IsNumericField(name))       // encapsulate
                        {
                            str   = new RegexGenerator(cmd.RegexPattern).CreateString(r, rs.Skew(7, 50), cmd.WhiteSpace);
                            found = true;
                        }
                        if (IsDigitField(name))       // encapsulate
                        {
                            str   = new RegexGenerator(cmd.RegexPattern).CreateString(r, 1, cmd.WhiteSpace);
                            found = true;
                        }
                        if (!found)
                        {
                            str = new RegexGenerator(cmd.RegexPattern).CreateString(r, cmd.WhiteSpace);
                        }
                    }
                    break;

                case 0: str = ""; break;

                default:
                    if (!string.IsNullOrEmpty(cmd.RegexPattern))
                    {
                        // ----------------------------------------------------------
                        //  convert a Regex pattern into a random string that it will match
                        // ----------------------------------------------------------
                        RegexGenerator genRegex = new RegexGenerator(cmd.RegexPattern);
                        str = genRegex.CreateString(r, cmd.WhiteSpace);
                        for (int i = 0; str.Length > cmd.MaxLength && i < 10; i++)
                        {
                            str = genRegex.CreateString(r, cmd.WhiteSpace);
                        }
                    }
                    else       // encapsulate
                    {
                        str = DbLabels.CreatePrettyLabel(r.Next(1, cmd.MaxLength + 1), LabelType.any);
                    }
                    break;
                }
            }

            return(str);
        }
Пример #18
0
 private static void Init()
 {
     _r = RandomSource.New().Random;
 }