VB和C#中的随机序列相同



我正在将VB6中的一个旧应用程序迁移到C#,发现随机数序列有问题:

(pin是字符串格式中大于0的数字(在我的VB代码中,我发现:

Rnd("-" & pin)
Randomize(CDbl(pin))

因此,代码始终生成相同的数字序列(阅读此注释(

现在,在我的C#代码中,我有:

Random r = new Random(int.Parse(pin))

但它不会生成相同的序列。

如果可能的话,我会尽量避免使用VBMath.Rnd((指令。

请告诉我C#中的等效代码是什么?

提前感谢!

这里有各种问题:

  • 您决定不使用Microsoft重新实现的Random()/Rnd()VB6方法(来自程序集Microsoft.VisualBasic(和

  • Random()函数没有完整的公开文档(Rnd()函数有部分文档,减去关于在这里和这里使用负数补种的部分(

现在。。。这里有一个在VB.NET中重新实现的算法,它声称是VBMath Rnd((1:1克隆

问题在于该要点的合法性。。。我们不知道作者是如何对算法进行逆向工程的。。。如果你所做的是私人使用的,你显然可以使用IlSpy并查看Microsoft.VisualBasic程序集,在那里你可以找到整个算法(它不到100行代码,projectData.m_rndSeed是327680,正如维基上记录的那样(。如果你愿意,你甚至不需要使用IlSpy。。。微软将源代码(用vb.net编写(放在其引用源github中,但请注意,同样的合法性问题也适用:引用源下的代码仅用于浏览。

最新更新