相关疑难解决方法(0)

如何随机排序IEnumerable <>?

我有这个IEnumerable:

IEnumerable<MyObject>
Run Code Online (Sandbox Code Playgroud)

我需要随机订购MyObject列表.我需要强制转换为ArrayList吗?

或者我可以直接做到吗?谢谢

编辑

这是我的实际随机顺序函数:

IList<ArchiePacchettoOfferta> list = new List<ArchiePacchettoOfferta>(m_oEnum);
for (int i = 0; i < list.Count; ++i)
{
    HttpContext.Current.Response.Write(list[i].Titolo + "<br />");
}

Random rnd = new Random();
for (int i = 0; i < list.Count; ++i)
{
    int swapIndex = rnd.Next(i + 1);
    ArchiePacchettoOfferta tmp = list[i];
    list[i] = list[swapIndex];
    list[swapIndex] = tmp;
}

for (int i = 0; i < list.Count; ++i)
{
    HttpContext.Current.Response.Write(list[i].Titolo + "<br />");
}
Run Code Online (Sandbox Code Playgroud)

它每次以相同的方式命令列表:(

c# ienumerable

3
推荐指数
1
解决办法
3470
查看次数

你知道一种解组列表或数组的方法吗?

我记得看到一个方法似乎是排序,在哪里可以解开项目.

例如,我试图使用Random类显示从0到10的随机化项目.但我猜这不是最好的选择.

所以,我想为IEnumberable,List或数组创建扩展,无论什么都是最好的方法.

c# sorting algorithm

3
推荐指数
2
解决办法
4141
查看次数

IEnumerable的随机顺序

我有一个IEnumerable集合如下

var result1 = GetResult1() // Returns 2,4,5,6
Run Code Online (Sandbox Code Playgroud)

我必须以随机方式处理元素并创建另一个集合,结果如下:

var result2 = GetResult2(result1) // Returns 2,4,5,6 in a random order.
// An example output would be 4,6,2,5 in the resultant collection.
Run Code Online (Sandbox Code Playgroud)

我通过以下方式完成此操作:

var result1 = GetResult1();
var random = new Random();
var result2 = result1.OrderBy(order=>random.Next());
Run Code Online (Sandbox Code Playgroud)

然而,这个问题是如果我访问result2,result2中的元素会再次被洗牌,即如果我将result2的结果输出到控制台两次,则元素会再次变为juggled.

能告诉你如何保持这种制服.也就是说,一旦我处理了这个集合,它应该保持相同的方式.我必须使用懒惰的评估,因为结果非常大.

c# ienumerable c#-4.0

3
推荐指数
2
解决办法
4061
查看次数

是否传入应该知道隐含的封装参数?

我经常在这里听到测试驱动的开发人员,有一个函数隐含地获取大量信息是一件坏事.我可以看到,从测试的角度来看,这会是不好的,但从封装的角度来看,它有时是不是必要吗?我想到以下问题:

使用Random和OrderBy是一个很好的shuffle算法吗?

基本上,有人想在C#中创建一个函数来随机地移动一个数组.有几个人告诉他应该将随机数生成器作为参数传入.这似乎是对我的一种严重违反封装,即使它确实使测试更容易.数组混洗算法除了数组之外是否需要任何状态,而不是调用者不应该关心的实现细节?获取此信息的正确位置是不是可能来自线程本地单例?

language-agnostic testing singleton encapsulation tradeoff

2
推荐指数
1
解决办法
582
查看次数

XNA随机选择纹理总是选择相同的纹理

我制作了这段代码,将大约8种不同的纹理加载到具有纹理属性的对象列表中.

我有一个名为"1.png,2.png,3.png,.......,46.png"的纹理文件夹,我希望8个不同的对象加载随机选择的纹理.

        DockedFruitsList = new List<Fruit>(8);
        for (int i = 0; i < 8; i++)
        {
            Fruit temp = new Fruit();
            temp = new Fruit();
            temp.Position = AvailablePositions[i];
            int random=(new Random().Next(0, 4600) % 46);
            temp.Texture = Content.Load<Texture2D>(@"Fruits/" + random);
            DockedFruitsList.Add(temp);          

        }
Run Code Online (Sandbox Code Playgroud)

问题是,尽管随机总是生成不同的数字,但绘制的结果始终是相同的纹理,它从运行变为另一个运行,但对于所有8个纹理它总是相同的

spriteBatch.Begin();
        for (int i = 0; i < DockedFruitsList.Count; i++)
        {
            spriteBatch.Draw(DockedFruitsList[i].Texture, DockedFruitsList[i].Position, Color.White);
        }
        spriteBatch.End();
Run Code Online (Sandbox Code Playgroud)

c# xna windows-phone-7 xna-4.0

2
推荐指数
1
解决办法
1768
查看次数

C#创建随机唯一整数列表

我需要创建一个包含十亿个整数的列表,它们必须都是唯一的.我还需要非常快速地完成这项工作.

创建列表并逐个添加随机数并检查每个列表是否重复是非常慢的.

如果我只是用随机数填充列表而不检查它们是否重复,然后使用distinct().toList(),这似乎相当快.我重复这个,直到没有重复.但是,创建新列表所使用的额外内存不是最佳的.有没有办法获得distinct()的性能,但它只是修改源列表而不是创建一个新的列表?

c# list unique distinct

2
推荐指数
2
解决办法
1万
查看次数

我用来随机排序List.我可以用Enumerable做同样的事情吗?

这是我在List中随机排序第一个N元素的代码:

int upper = 1;
if (myList.Count > 1)
{
    Random r = new Random();
    upper = Math.Min(maxNumberOfPackets, myList.Count);
    for (int i = 0; i < upper; i++)
    {
        int randInd = r.Next(i, myList.Count);
        var temp = myList[i];
        myList[i] = myList[randInd];
        myList[randInd] = temp;
    }
}
Run Code Online (Sandbox Code Playgroud)

好吧,现在我有"必要性"只使用Enumerable(出于某种原因;所以我不想在Enumerable中转换它).

根据您的了解,我可以使用Enumerable进行相同的操作吗?我认为痛苦是在X位置获得元素......

我很好奇......

c# random ienumerable list

2
推荐指数
1
解决办法
558
查看次数

从数组字符串中获取随机的8个元素值,没有重复的元素

我有一个长度为100的字符串数组.我希望在C#中没有重复元素的100个元素中随机获得8个元素.请帮我.我很感激.我只是用:

   for (int i = 0; i < 8; i++)
   {
        work with 8 values here
   }
Run Code Online (Sandbox Code Playgroud)

上面的代码只执行8个第一个值而不是8个随机值.

c# arrays random

2
推荐指数
1
解决办法
59
查看次数

随机化一个整数数组

你能帮我找一个随机化数组的方法吗?例如:

int[] arrayInt = { 1, 2, 3, 4, 5, 6, 7 };
Run Code Online (Sandbox Code Playgroud)

随机化后,结果应存储在另一个数组中.

当你再次随机化时,它应该与存储在第二个数组中的值进行比较,如果该值存在,程序必须再次随机化.

c# arrays random

1
推荐指数
1
解决办法
2056
查看次数

不重复的随机数生成器

我正在尝试创建一个 1 到 500 之间不重复的随机数生成器。我创建了一个数组来跟踪生成的数字是否已被使用,但它似乎不起作用

if (drawnTF[num] == false)
            {
                labels[labelNum].Visible = false;
                txtLatestDrawnNum.Text = "Latest Drawn Number: " + latestDrawnNum.ToString("000");
                drawnTF[num] = true;
            }
            else
            {
                while (drawnTF[num] == true)
                {
                    num = random.Next(0, 499);
                    if (drawnTF[num] == false)
                    {
                        labelNum = 499 - num;
                        labels[labelNum].Visible = false;
                        txtLatestDrawnNum.Text = "Latest Drawn Number: " + latestDrawnNum.ToString("000");
                        drawnTF[num] = true;
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

c#

1
推荐指数
1
解决办法
382
查看次数