小编Alo*_*kin的帖子

随机播放列表算法

我需要以随机顺序从一个范围(例如从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
查看次数

ANTLR ClassCastException

为什么在ANTLR中生成代码时会出现此错误?

[16:06:38] error(10):  internal error: C:\Users\user\Desktop\test.g : java.lang.ClassCastException: org.antlr.runtime.tree.CommonTree cannot be cast to org.antlr.tool.GrammarAST
org.antlr.grammar.v3.CodeGenTreeWalker.rules(CodeGenTreeWalker.java:1467)
org.antlr.grammar.v3.CodeGenTreeWalker.grammarSpec(CodeGenTreeWalker.java:1441)
org.antlr.grammar.v3.CodeGenTreeWalker.grammar_(CodeGenTreeWalker.java:509)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:421)
org.antlr.Tool.generateRecognizer(Tool.java:655)
org.antlr.Tool.process(Tool.java:468)
org.antlr.works.generate.CodeGenerate.generate(CodeGenerate.java:104)
org.antlr.works.generate.CodeGenerate.run(CodeGenerate.java:185)
java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

语法非常简单,仅用于测试:

grammar test;

ID  :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
    ;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

java antlr

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

BigInteger与否还不是BigInteger?

在Java中,大多数基本类型都是有符号的(一位用于表示+/-),因此当我超出类型的限制时,我会得到意想不到的结果,比如负数.

有没有比使用BigInteger更好的解决方案,因为BigInteger存在性能问题,您需要使用类方法进行基本算术而不是语言运算符(废弃可读性)?

java biginteger

11
推荐指数
2
解决办法
2842
查看次数

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

WebGL框架

我打算写一个基于WebGL的3D FPS游戏.

  • 我应该使用一些WebGL框架吗?
  • 今天最活跃和最受欢迎的WebGL库是什么?它是否支持LOD,Heightmaps,COLLADA和一些材料系统?

谢谢.

3d html5 frameworks webgl

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

用于为COM DLL创建.NET包装器的工具?

是否有任何开源工具可以自动为COM DLL库生成.NET包装器?

.net c# com wrapper

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

为什么C#中的方法不是自动虚拟的?

可能重复:
为什么C#默认将方法实现为非虚方式?

定义哪些方法不可克服而不是可以克服的方法要少得多,因为(至少对我而言),当你设计一个类时,你不关心它的继承人是否会覆盖你的方法. ..

那么,为什么C#中的方法不会自动虚拟?这是什么常识?

c# virtual

10
推荐指数
4
解决办法
816
查看次数

有没有办法在C#中做这样的事情?

有没有办法在C#中做这样的事情?

public void DoSomething(string parameterA, int parameterB)
{

}

var parameters = ("someValue", 5);
DoSomething(parameters);
Run Code Online (Sandbox Code Playgroud)

c# parameters

10
推荐指数
4
解决办法
787
查看次数

在C#中实现红黑树

我正在寻找C#中的红黑树实现,具有以下功能:

  • 在O(log n)中搜索,插入和删除.
  • 成员类型应该是通用的.
  • Comparer(T)中支持,用于按其中T的不同字段进行排序.
  • 在树中搜索应该使用特定字段,因此它不会接受T,但它会接受对其进行排序的字段类型.
  • 搜索不应该只是确切的值.应该支持搜索较低/较高的一个.

谢谢.

c# red-black-tree

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

单声道AOT分段故障 - 奇怪的问题

我想测试Mono AOT,所以我用MonoDevelop编写了一个简单的控制台应用程序:

using System;

namespace abc
{
    public class Program
    {
        public static void Main()
        {
            Console.WriteLine("Hello World!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它在bin/debug中创建了一个名为"abc.exe"的文件.当我尝试做的时候:

mono abc.exe
Run Code Online (Sandbox Code Playgroud)

有效.所以,我试着AOT它.我做了:

mono --aot abc.exe
Run Code Online (Sandbox Code Playgroud)

它创建了一个名为abc.exe.so的文件.当我尝试启动它时,它会抛出"Segmentation fault(core dumped)"错误.继承单声道的输出--aot:

Code: 51 Info: 5 Ex Info: 8 Unwind Info: 31 Class Info: 30 PLT: 2 GOT Info: 11 GOT Info Offsets: 16 GOT: 20 Offsets: 48
Compiled 2 out of 3 methods (66%)
1 methods have other problems (33%)
Methods without GOT slots: 1 (33%)
Direct calls: 0 (100%) …
Run Code Online (Sandbox Code Playgroud)

c# mono aot

9
推荐指数
2
解决办法
1577
查看次数