C# 取几个不重复的随机的值(几种方案)

本文介绍四种不同的方法来从一个整数列表中随机选择四个不重复的元素,并展示如何将这些选中的元素转换为字符串形式进行展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       public static void DisplayMsg(string sCaption, string sMsg)
       {
           sMsg = sMsg.TrimEnd('!').TrimEnd('!') + " !";
           MessageBox.Show(sMsg, sCaption);
       }

 

 1.

            List<int> arr = Enumerable.Range(0, 11).ToList<int>();
            List<int> result = new List<int>();
            Random ran = new Random();
            for (int i = 0; i < 4; i++)
            {
                int temp = ran.Next(arr.Count);
                result.Add(arr[temp]);
                arr.RemoveAt(temp);
            }
            string sResult = string.Empty;
            for (int i = 0; i < result.Count; i++)
            {
                sResult += result[i] + ",";
            }

            sResult = sResult.TrimEnd(',');
            Common.DisplayMsg(this.Text, sResult);

 

2.

            string sResult = string.Empty;
            var num = Enumerable.Range(0, 11)
    .Select(x => new { v = x, k = Guid.NewGuid().ToString() }).ToList()
    .OrderBy(x => x.k)
    .Select(x => x.v)
    .Take(4).ToList();
            foreach (var i in num)
            {
                sResult += i + ",";
            }

            sResult = sResult.TrimEnd(',');
            Common.DisplayMsg(this.Text, sResult);

 

3.

            string sResult = string.Empty;
            List<int> result = new List<int>();
            while (true)
            {
                Random rd = new Random();
                int a = rd.Next(11);
                if (result.Contains(a))
                    continue;

                result.Add(a);
                if (result.Count == 4)
                    break;
            }

            for (int i = 0; i < result.Count; i++)
            {
                sResult += result[i] + ",";
            }

            sResult = sResult.TrimEnd(',');
            Common.DisplayMsg(this.Text, sResult);

 

4.

            string sResult = string.Empty;
            List<int> list = new List<int>();
            List<int> result = new List<int>();
            Random rd = new Random();
            for (int i = 0; i <= 10; i++)
            {
                list.Add(i);
            }

            while (result.Count<4)
            {
                int index = rd.Next(0, list.Count);
                if (result.Contains(list[index]))
                    continue;
                result.Add(list[index]);
                list.Remove(index);
            }

            for (int i = 0; i < result.Count; i++)
            {
                sResult += result[i] + ",";
            }

            sResult = sResult.TrimEnd(',');
            Common.DisplayMsg(this.Text, sResult);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值