<分区>
尽管this post says it should work ,如果您创建一个大小为 Int32.MaxValue 的 int 数组,它会抛出一个 OutOfMemoryException: Array dimensions exceeded supported range.
根据我的测试,数组可以初始化的最大大小似乎是 Int32.MaxValue - 1048576
(2,146,435,071)。 1048576 是 2^20。所以只有这个有效:
var maxSizeOfIntArray = Int32.MaxValue - 1048576;
var array = new int[maxSizeOfIntArray];
有人知道为什么吗?有没有办法创建更大的整数数组?
PS:我需要使用数组而不是列表,因为 Math.Net 库只返回随机数集的数组,这些随机数是加密安全的伪随机数生成器
是的,我看过其他链接的问题,但它们不正确,因为这些问题说最大的大小是 Int32.MaxValue,这与我的计算机允许我做的不一样
是的,我知道数组的大小将是 8GB,我需要生成一个包含数十亿行的数据集,以便使用更难的测试套件来测试随机性
我还尝试了创建 BigArray<T>
的选项但 C# 似乎不再支持它。我找到了它的一个实现,但它在索引 524287 处抛出了 IndexOutOfRangeException,即使我将数组大小设置为 300 万。