예제 #1
0
        static public IEnumerable <T> TruncateRandom <T>(this IEnumerable <T> item, RandIntSource source, int limit = 0)
        {
            List <T> list = item.ToList();

            list.RemoveEndingRandom(source, limit);
            return(list);
        }
예제 #2
0
        static public string ReadRandomLine(this StreamSystem item, string path, RandIntSource source, long milliseconds = StreamSystem.DEFAULT_WAIT)
        {
            string output;

            item.AttemptReadRandomLine(path, out output, source, milliseconds);
            return(output);
        }
예제 #3
0
        static public IEnumerable <T> OffsetRandom <T>(this IEnumerable <T> item, RandIntSource source, int limit = int.MaxValue)
        {
            List <T> list = item.ToList();

            list.RemoveBeginningRandom(source, limit);
            return(list);
        }
예제 #4
0
        static public IEnumerable <T> Randomize <T>(this IEnumerable <T> item, RandIntSource source)
        {
            List <T> list = item.ToList();

            list.Shuffle(source);
            return(list);
        }
예제 #5
0
 static public void Shuffle <T>(this IList <T> item, RandIntSource source)
 {
     for (int i = 0; i < item.Count; i++)
     {
         item.SwapValues(i, source.GetBetween(i, item.Count));
     }
 }
예제 #6
0
        static public string ReadTextRandomLine(this Stream item, RandIntSource source)
        {
            StreamReader reader = new StreamReader(item);

            if (item.CanSeek)
            {
                item.Position = source.GetIndex((int)item.Length);

                if (reader.ReadLine() != null)
                {
                    string line = reader.ReadLine();

                    if (line != null)
                    {
                        return(line);
                    }
                }

                item.Position = 0;
                return(reader.ReadLine());
            }

            return(reader.ReadLines().ToList().GetRandom(source));
        }
예제 #7
0
 public RandIntBox(RandIntSource s)
 {
     source = s;
 }
예제 #8
0
 static public AttemptResult AttemptReadRandomLine(this StreamSystem item, string path, Process <string> process, RandIntSource source, long milliseconds = StreamSystem.DEFAULT_WAIT)
 {
     return(item.AttemptRead(path, delegate(Stream stream) {
         process(stream.ReadTextRandomLine(source));
     }, milliseconds));
 }
예제 #9
0
 static public AttemptResult AttemptReadRandomLine(this StreamSystem item, string path, out string output, RandIntSource source, long milliseconds = StreamSystem.DEFAULT_WAIT)
 {
     return(item.AttemptReadRandomLine(path, s => s, out output, source, milliseconds));
 }
예제 #10
0
 public RandIntBox_Between(int na, int nb, RandIntSource s) : base(s)
 {
     a = na;
     b = nb;
 }
예제 #11
0
        static public AttemptResult AttemptReadRandomLine <T>(this StreamSystem item, string path, Operation <T, string> operation, out T output, RandIntSource source, long milliseconds = StreamSystem.DEFAULT_WAIT)
        {
            T             temp   = default(T);
            AttemptResult result = item.AttemptReadRandomLine(path, delegate(string line) {
                temp = operation(line);
            }, source, milliseconds);

            if (result.IsDesired())
            {
                output = temp;
            }
            else
            {
                output = default(T);
            }

            return(result);
        }
예제 #12
0
 static public T GetRandom <T>(this IList <T> item, RandIntSource source)
 {
     return(item.Get(source.GetIndex(item.Count)));
 }
예제 #13
0
 static public void RemoveEndingRandom <T>(this IList <T> item, RandIntSource source, int index_limit = 0)
 {
     item.RemoveEnding(source.GetIndex(item.Count).BindAbove(index_limit));
 }
예제 #14
0
 static public void RemoveBeginningRandom <T>(this IList <T> item, RandIntSource source, int index_limit = int.MaxValue)
 {
     item.RemoveBeginning(source.GetIndex(item.Count).BindBelow(index_limit));
 }
예제 #15
0
 static public IEnumerable <T> GetMultipleRandom <T>(this IList <T> item, int count, RandIntSource source)
 {
     for (int i = 0; i < count; i++)
     {
         yield return(item.GetRandom(source));
     }
 }
예제 #16
0
 static public IEnumerable <T> RotateRandom <T>(this IList <T> item, RandIntSource source)
 {
     return(item.RotateLooped(source.Get()));
 }
예제 #17
0
 public RandFloatSource_IntSource(RandIntSource i)
 {
     int_source = i;
 }
예제 #18
0
        static public T ReadRandomLine <T>(this StreamSystem item, string path, Operation <T, string> operation, RandIntSource source, long milliseconds = StreamSystem.DEFAULT_WAIT)
        {
            T output;

            item.AttemptReadRandomLine <T>(path, operation, out output, source, milliseconds);
            return(output);
        }