要求是:
>始终小于64位,因此表示可以是长整数>随机生成排列(这可能很慢,因为它只进行一次).我可能会使用Knuth shuffle.>多次使用生成的排列,因此需要快速
我知道Knuth详细介绍了这个,但我想知道是否有任何.NET / C#特定的解决方案.
编辑:我使用的是.NET 3.5版.
同时,.NET确实提供了动态编译功能,可以帮助您有效地重复执行shuffle.
什么版本的.NET?最简单的方法可能是使用Knuth的算法并在Expression< Func< ulong,ulong>>中对结果操作进行编码,然后将结果编译为Func< long,long>代表.