同样装了.NET6.0的不同电脑上运行,C# Random类用同样seed,能生成同样的随机数么?
官方MSDN上没有给出这个问题的任何说明:https://learn.microsoft.com/zh-cn/dotnet/api/system.random?view=net-7.0我就一台电脑,没法测试
private void button7_Click(object sender, EventArgs e)
{
Random r1 = new Random(1234567);
List<int> l1 = new List<int>();
for (int i = 0; i < 10; i++)
l1.Add(r1.Next(9));
Random r2 = new Random(1234567);
List<int> l2 = new List<int>();
for (int i = 0; i < 10; i++)
l2.Add(r2.Next(9));
bool isAllEquals = true;
for (int i = 0; i < 10; i++)
{
if (l1 != l2)
isAllEquals = false;
}
StringBuilder sb = new StringBuilder();
sb.Append($"生成是否相同:{isAllEquals}\n具体随机的数字为:\n");
for (int i = 0; i < 10; i++)
sb.Append(l1).Append(",");
MessageBox.Show(sb.ToString());
}
仅仅只在我电脑上,多次运行,永远是
7,6,2,1,5,8,8,4,4,1,
在C#中,如果使用相同的种子(seed)实例化Random类,可以生成相同的随机数序列。但是,在不同的电脑上使用不同版本的.NET Core可能会导致不同的随机数生成算法,从而生成不同的随机数序列。
由于计算机生成的随机数本质上是伪随机数,因此在不同的操作系统、硬件和软件环境中,可能会产生不同的随机数序列。因此,使用相同的种子(seed)实例化Random类并不能保证在不同的电脑上生成相同的随机数序列。
如果您需要在多个计算机之间生成相同的随机数序列,建议使用特定的随机数生成算法,并确保在所有计算机上使用相同的算法和实现。 同编译器同种子结果是一样的 ---------------------------
---------------------------
生成是否相同:True
具体随机的数字为:
7,6,2,1,5,8,8,4,4,1,
---------------------------
确定
---------------------------
我电脑生成的也是一样的
种子你用Guid就不一样了{:301_971:} 建议 使用GUID ,guid不会重复 我的电脑生成的也一样, 只要类库算法一致,肯定生成的相同,, 相同的.net版本没改算法的话,是一致的 2楼和3楼说法明显是对立的。2楼说和目标电脑有关。3楼说之和编译时有关