在 c++ 和 .NET 中生成相同的随机数
Producing same random numbers in c++ and .NET
我必须将c ++程序移植到C#。
该程序涉及随机数。我必须在两个程序中生成完全相同的随机数才能在测试中获得相同的结果。
在我使用的C++
srand(1000)
...
double r = (double)rand() / (double)(RAND_MAX);
在 C# 中,我使用
private readonly Random _rnd = new Random(1000);
...
_rnd.NextDouble()
然而,尽管种子相同,程序会产生不同的数字。有没有办法产生相同的随机数?
你知道
吗,c++ rand 和 c# 随机类使用什么算法?
您可以尝试自己实现一些 PNG。例如。LCG算法非常简单,在两种语言中都可以轻松实现...只需使用维基页面中的一些常见参数。
本质上,两个随机函数(srand vs Random)都有不同的底层实现,因此你不能依赖它们给出相同的输出。那么,为什么不提供一组"n"个数字,并将它们输入到c ++和c#的算法中 - 当然只是为了测试目的?这样,您始终可以确定您将拥有相同的金额,相同的数字和相同的顺序。
例如:一个文件,每行都有一些数字,然后在C ++/C#中读出它,然后将这些数字输入到您尝试"测试"的算法中。
(另外,您想在这里测试什么?您编写的算法(因此是移植的算法),还是两种语言的"随机"功能?因为,根据您对我上述问题的回答,与您的案件相关的答案可能会有很大不同!那么,您能为我们提供更多背景信息吗?
我用了这个
Random rnd = new Random();
作为我的宣言。
而这个:
Convert.ToString(rnd.Next(1, 49))
作为按下按钮时的执行。
也许你可以对此有所有用的利用。
问候
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 具有随机数的二维数组不会更改
- 随机数未达到限制
- 我想生成许多矩阵并用随机数填充它
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 制作具有平均值的随机数生成器
- 为什么 rand 不在我的代码中生成随机数?
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 从给定种子生成相同的随机数序列C++
- 随机数生成函数说明
- C++ 尝试生成随机数时弹出警告帮助?
- 尝试在 c++ 中创建随机数生成器并收到错误
- 从给定的随机数组值生成随机数 Arduino程序C++
- 如何在个人计算机和群集 (c++) 上生成相同的随机数