Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的快速位置换#_C#_Algorithm_Bit Manipulation - Fatal编程技术网

C# C语言中的快速位置换#

C# C语言中的快速位置换#,c#,algorithm,bit-manipulation,C#,Algorithm,Bit Manipulation,我正在实现并寻找一种在C#中快速排列位的方法(在MMIX中一次操作就可以完成这种事情) 这些要求是: 始终小于64位,因此表示可以是长整数 随机生成一个置换(这可能很慢,因为它只执行一次)。我可能会使用Knuth shuffle 多次使用生成的置换,因此这需要很快 我知道Knuth对此进行了详细的讨论,但我想知道是否有任何特定于.NET/C的解决方案 编辑:我使用的是.NET版本3.5。因为C#没有提供Knuth在C中没有的任何位操作指令,不,没有.NET/C#特定的解决方案 同时,.NET

我正在实现并寻找一种在C#中快速排列位的方法(在MMIX中一次操作就可以完成这种事情)

这些要求是:

  • 始终小于64位,因此表示可以是长整数
  • 随机生成一个置换(这可能很慢,因为它只执行一次)。我可能会使用Knuth shuffle
  • 多次使用生成的置换,因此这需要很快
我知道Knuth对此进行了详细的讨论,但我想知道是否有任何特定于.NET/C的解决方案

编辑:我使用的是.NET版本3.5。

因为C#没有提供Knuth在C中没有的任何位操作指令,不,没有.NET/C#特定的解决方案

同时,.NET确实提供了动态编译,这将帮助您高效地重复执行洗牌


什么版本的.NET?最简单的方法可能是使用Knuth算法,将结果运算编码为
表达式
,然后将结果编译为
函数
委托。

C#中的位置换如何?你认为慢吗?@JaredPar:我不知道C#中有任何位置换运算符-你能告诉我吗?我怀疑标准操作是否缓慢。问题是,对于给定的置换,找到一系列运算,这些运算将尽快计算置换。谢谢,这似乎是一个明智的解决方案。