我必须将c ++程序移植到C#。
该计划涉及随机数。我必须在两个程序中生成完全相同的随机数,才能在测试中得到相同的结果。
在C ++中我使用
srand(1000)
...
double r = (double)rand() / (double)(RAND_MAX);
在C#中我使用
private readonly Random _rnd = new Random(1000);
...
_rnd.NextDouble()
然而,尽管有相同的种子,程序会产生不同的数字有没有办法生成相同的随机数?
答案 0 :(得分:2)
你知道吗,c ++ rand和c#Random class使用了什么算法?
您可以尝试自行实施一些PNG。例如。 LCG算法非常简单,并且可以在两种语言中轻松实现...只需使用维基页面中的一些常用参数。
答案 1 :(得分:1)
基本上两个随机函数(srand与Random)都有不同的底层实现,因此你不能依赖它们给出相同的输出。那么为什么不提供一组“n”数字并将它们输入到c ++和c#中的算法中 - 仅用于测试目的?通过这种方式,您始终可以确定您的数量,数量和订单数量相同。
例如:一个文件,每行都有一些数字,然后在c ++ / c#中读出,然后将这些数字输入到你试图“测试”的算法中。(另外,你想在这里测试什么?你编写的算法(这样的移植算法),或两种语言中的“随机”功能? 因为,根据您对上述问题的回答,与您的案例相关的答案可能会有很大不同!那么你能为我们提供更多的背景吗?)
答案 2 :(得分:0)
我用过这个
Random rnd = new Random();
作为我的宣言。
和此:
Convert.ToString(rnd.Next(1, 49))
按下按钮时的执行。
也许你可以对此有用。
问候