• 关于Random 和 List<int>的Exist的方法使用


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace List
    {
        class Program
        {
            static void Main(string[] args)
            {
                var list = Getint();
                foreach (var item in list)
                {
                    Console.WriteLine(item.ToString());
                }
                Console.ReadKey();
            }
    
            static Random rd = new Random();
            public static List<int> Getint()
            {
                List<int> list = new List<int>();
                while (true)
                {
                   // Random rd = new Random();
                    int id =rd.Next(0, 1111);
                    if (list.Count != 0)
                    {
                        if (!list.Contains(id))
                        {
                            list.Add(id);
                        }
                    }
                    else
                    {
                        list.Add(id);
                    }
    
                    if (list.Count>3)
                    {
                        break;
                    }
                }
                return list;
            }
        }
    }

    以上的代码很简单。

    两个Random放在不同的位置,产生的不同的随机值相等几率是不同的。在循环外头的生成的相同概率是比较小的。

    这里的问题在于它是一个伪随机,并非一个真随机数。

    随机数的选择是从随机种子开始的,默认的随机种子很容易生成相同的随机数。

    当循环的速度快时,每次都去new了一个相同的随机值的概率是很大的。

    之前认为,每new一个,这样产生的随机值应该是不一样的,但是由于伪随机的原因,结果一堆一样的随机值出现了。

    还有那个Exists的用法也是很奇怪了,因为我只是int类型,并未使用复杂的结构体。尝试过多个写法,但是未能实现功能。最后还是只能用Contains

    if (list.Exists(x => x != id))
    {
    list.Add(id);
    }//不行

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
        public static void Main()
        {
            List<string> dinosaurs = new List<string>();
    
            dinosaurs.Add("Compsognathus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Oviraptor");
            dinosaurs.Add("Velociraptor");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Dilophosaurus");
            dinosaurs.Add("Gallimimus");
            dinosaurs.Add("Triceratops");
    
            Console.WriteLine();
            foreach(string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }
    
            Console.WriteLine("
    TrueForAll(EndsWithSaurus): {0}",
                dinosaurs.TrueForAll(EndsWithSaurus));
    
            Console.WriteLine("
    Find(EndsWithSaurus): {0}", 
                dinosaurs.Find(EndsWithSaurus));
    
            Console.WriteLine("
    FindLast(EndsWithSaurus): {0}",
                dinosaurs.FindLast(EndsWithSaurus));
    
            Console.WriteLine("
    FindAll(EndsWithSaurus):");
            List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);
    
            foreach(string dinosaur in sublist)
            {
                Console.WriteLine(dinosaur);
            }
    
            Console.WriteLine(
                "
    {0} elements removed by RemoveAll(EndsWithSaurus).", 
                dinosaurs.RemoveAll(EndsWithSaurus));
    
            Console.WriteLine("
    List now contains:");
            foreach(string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }
    
            Console.WriteLine("
    Exists(EndsWithSaurus): {0}", 
                dinosaurs.Exists(EndsWithSaurus));
          

          //改写

               Console.WriteLine(" Exists(EndsWithSaurus): {0}",
               dinosaurs.Exists((s) =>{ return s.ToLower().EndsWith("saurus"); }));

    
        }
    
        // Search predicate returns true if a string ends in "saurus".
        private static bool EndsWithSaurus(String s)
        {
            return s.ToLower().EndsWith("saurus");
        }
    }

    循环遍历到真就返回了。

  • 相关阅读:
    思源:秒级体验百亿级数据量监控钻取
    禧云Redis跨机房双向同步实践
    谈谈数据中台技术体系
    RCA:收单设备调用云端接口频繁超时排查总结
    技术上的“深淘滩,低作堰”
    企业私有源代码上传github致入侵之大疆案判决了
    那些年我们一起犯过的错
    异地双活的四个误区
    没有预见性你凭什么晋升
    中国IT史上两大严重事故对我们的警醒及预防措施
  • 原文地址:https://www.cnblogs.com/annkiny/p/7021593.html
Copyright © 2020-2023  润新知