如何在现有列表中添加相同的数字
本文关键字:添加 数字 列表 | 更新日期: 2023-09-27 18:35:40
我生成随机数的函数是这样的:
public static List<int> GetRandomNumbers(int count)
{
HashSet<int> randomNumbers = new HashSet<int>();
Random random = new Random();
for (int i = 0; i < count; i++)
{
while(!randomNumbers.Add(random.Next(100, 999)));
}
return randomNumbers.ToList();
}
我是这样称呼它的:
private void button1_Click(object sender, EventArgs e)
{
List<int> list = new List<int>();
list = GetRandomNumbers(5);
for (int i = 0; i < list.Count; i++)
{
MessageBox.Show(list[i].ToString());
}
}
好的,所以,我想做的是,例如,如果生成的列表如下:
152 582 254 891 421
我想使列表成为:
152 152 582 582 254 254 891 891 421 421
基本上,每个数字都要在列表中自己之后再添加一次。我该怎么做?(考虑到时间不是问题,如果您包括一种简单的方法来做到这一点,那就太好了,也许是节省时间的更好方法)
谢谢
你的问题不清楚。
您可以获取一个包含重复元素的列表(不是HashSet
),并将每个重复项移动到紧跟在第一次出现之后,如下所示:
var numbers = Enumerable.Range(1, count).Select(i => random.NextInt(0, 300));
return numbers.GroupBy(i => i).SelectMany(s => s).ToList();
您可以采用现有列表并使每个元素重复两次,如下所示:
list.SelectMany(o => Enumerable.Repeat(o, 2));
您可以将函数稍微更改为:
private static Random random = new Random();
public static List<int> GetRandomNumbers(int count)
{
int value;
List<int> values = new List<int>();
HashSet<int> randomNumbers = new HashSet<int>();
for (int i = 0; i < count; i++)
{
while (!randomNumbers.Add(value = random.Next(100, 999)));
values.Add(value);
values.Add(value);
}
return values;
}
我认为你只是想要这样的东西:
var list2 = new List<int>(list1.Count * 2);
foreach (var n in list1)
{
list2.Add(n);
list2.Add(n);
}
这将遍历列表并将每个值放入第二个列表中两次。
我认为您需要按如下方式更改函数:
public static List<int> GetRandomNumbers(int count)
{
List<int> Result = new List<int>();
Random random = new Random();
for (int i = 0; i < count; i++)
{
int NewNumber = random.Next(100, 999);
Result.Add(NewNumber);
Result.Add(NewNumber);
}
return Result;
}
我尝试了上面的功能,它就像你说的那样工作。