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

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);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值