制作一个列表而不是包含另一个列表中的随机数

时间:2015-06-07 02:09:32

标签: c# list

我是C#编程的新手,我知道其他语言(高级) 但我不知道我怎么能做到这一点。 我想制作一个包含随机集订单号的列表[],但它只会从另一个列表中创建数字,例如NumberLis = [0,1]

Using sr As StreamReader = New StreamReader("C:\MCHCI_Profile.txt")
            Do
                ListBox1.Items.Add(sr.ReadLine())
            Loop Until sr.EndOfStream
        End Using

我知道如何在python中执行此操作, 我试图做的Python代码(如果有帮助的话) 随机导入

NumberList = [0,1]
list =  [NumberList(random(0,1))]

3 个答案:

答案 0 :(得分:0)

我会这样做:

int[] source = new [] { 0, 1, };

var rnd = new Random();

List<int> result =
    Enumerable
        .Range(0, 100)
        .Select(n => source[rnd.Next(0, source.Length)])
        .ToList();

答案 1 :(得分:0)

要随机选择集合中的固定数量的项目(使用重复),您只需随机选择总体中的索引,然后将随机选择的项目添加到结果集中。如果你不想重复,那么我建议你使用shuffle。关于如何实现混洗算法的一个非常好的答案可以找到这个问题Is using Random and OrderBy a good shuffle algorithm?

重复示例。

var populationSize = 1000;
var population = Enumerable.Range(0, populationSize); // example - your population could be different

var randomSet = new List<int>();
var setSize = 10;

var random = new Random();

for (var i = 0; i < setSize; ++i)
{
    var idx = random.Next(populationSize);
    randomSet.Add(population[idx]);
}

或使用LINQ

var setSize = 10;
var random = new Random();
var randomSet = Enumerable.Range(0, setSize)
                          .Select(i => population[random.Next(populationSize)]);

答案 2 :(得分:-1)

一点点linq。下面的代码将采用任何输入列表。

Random rand = new Random();
List<int> input = new List<int>() { 1, 54, 4, 3, 7, 8 };
List<int> output = input.Select(x => new {rand = rand.Next(), value = x}).OrderBy(y => y.rand).Select(z => z.value).ToList();​