相关疑难解决方法(0)

随机播放列表算法

我需要以随机顺序从一个范围(例如从x到y)创建一个数字列表,这样每个订单都有相同的机会.

对于我用C#编写的音乐播放器,我需要这个,以随机顺序创建播放列表.

有任何想法吗?

谢谢.

编辑:我对更改原始列表不感兴趣,只需从随机顺序中的某个范围中获取随机索引,以便每个订单都有相同的机会.

这是我到目前为止所写的内容:

    public static IEnumerable<int> RandomIndexes(int count)
    {
        if (count > 0)
        {
            int[] indexes = new int[count];
            int indexesCountMinus1 = count - 1;

            for (int i = 0; i < count; i++)
            {
                indexes[i] = i;
            }

            Random random = new Random();

            while (indexesCountMinus1 > 0)
            {
                int currIndex = random.Next(0, indexesCountMinus1 + 1);
                yield return indexes[currIndex];

                indexes[currIndex] = indexes[indexesCountMinus1];
                indexesCountMinus1--;
            }

            yield return indexes[0];
        }
    }
Run Code Online (Sandbox Code Playgroud)

它正在工作,但唯一的问题是我需要在内存中分配一个大小为的数组count.我正在寻找不需要内存分配的东西.

谢谢.

c# algorithm smart-playlist playlist

13
推荐指数
3
解决办法
6244
查看次数

随机随机播放列表

可能重复:
随机化C#
shuffle中的List <T> (随机重新排列)List <string>
随机绘图算法

嗨,我有以下列表,我想输入model到列表,但随机进行.我看过几个例子,但它们似乎真的很混乱.我只想要一个简单的方法来做到这一点?

List<Car> garage ----randomise------> List<string> models


List<Car> garage = new List<Car>();

garage.Add(new Car("Citroen", "AX"));
garage.Add(new Car("Peugeot", "205"));
garage.Add(new Car("Volkswagen", "Golf"));
garage.Add(new Car("BMW", "320"));
garage.Add(new Car("Mercedes", "CLK"));
garage.Add(new Car("Audi", "A4"));
garage.Add(new Car("Ford", "Fiesta"));
garage.Add(new Car("Mini", "Cooper"));
Run Code Online (Sandbox Code Playgroud)

c# random shuffle list

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

先前未选择的随机数

以下代码部分按我的意愿工作

for (int i = 1; i <= practicehistory.TotalNumQuestions; i++)
{
    query = from a in db.Questions
            where a.CategoryId == practicehistory.CategoryId
            orderby a.QuestionId
            select a;
    randomNumber = random.Next(1, count + 1);
    int qNum = query.Skip(randomNumber - 1).First().QuestionId;
    asked.QuestionId = qNum;
    asked.OrderAsked = i;
    db.AskedHistories.Add(asked);
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

但是,我偶尔会遇到随机数与之前的for循环运行中的随机数相同的情况.我想知道是否有人有一个优雅的解决方案,我怎么能确保只生成一个比以前没有生成过的随机数?我正在考虑填充一个数组并检查它,但这似乎是多余的!

c#

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

标签 统计

c# ×3

algorithm ×1

list ×1

playlist ×1

random ×1

shuffle ×1

smart-playlist ×1