Пример #1
0
            /// <seealso cref="DiscreteRNG.NextInt()"/>
            public int NextInt()
            {
                double d   = random.NextDouble();
                int    idx = Collections.BinarySearch(v, d);

                if (idx > 0)
                {
                    ++idx;
                }
                else
                {
                    idx = -(idx + 1);
                }
                if (idx >= v.Count)
                {
                    idx = v.Count - 1;
                }
                if (idx == 0)
                {
                    return(k[0]);
                }
                int ceiling = k[idx];
                int lower   = k[idx - 1];

                return(ceiling - random.Next(ceiling - lower));
            }
Пример #2
0
        public static byte[] GetDictPart(int entry)
        {
            //System.Console.WriteLine("GetDictPart STEP 1, ENTRY = " + entry);

            int part = Collections.BinarySearch(dictIndexes, entry);

            //int part = dictIndexes.BinarySearch(entry);

            //System.Console.WriteLine("GetDictPart STEP 2, part = " + part);

            if (part < 0)
            {
                part = -part - 2;
            }
            //System.Console.WriteLine("GetDictPart STEP 3, return = " + dictParts.Count);

            return(dictParts[part]);
        }