用随机字节填充矩阵的最快方法

时间:2011-04-12 19:13:27

标签: c# random multidimensional-array

我想使用随机值填充数组。我写的代码就是这个:

public class PersonalityMap
{
    const int size = 16;
    byte[,] fullMap = new byte[size, size];

    /// <summary>
    /// Generates a random map
    /// </summary>
    public PersonalityMap()
    {
        Random random = new Random();
        byte[] row = new byte[size];
        for (int i = 0; i < size; i++)
        {
            random.NextBytes(row);
            for (int j = 0; j < size; j++)
                fullMap[i, j] = row[j];
        }
    }
}

但我觉得有办法更快地做到这一点。

2 个答案:

答案 0 :(得分:9)

好吧,你可以创建一个单维数组,填充它,然后用Buffer.BlockCopy复制它:

Random random = new Random();
byte[] row = new byte[size * size];
random.NextBytes(row);
Buffer.BlockCopy(row, 0, fullMap, 0, size * size);

然而,在您尝试进一步优化之前 - 您需要多快的速度?您是否对应用程序进行了基准测试并确定这是您的应用程序的瓶颈?

答案 1 :(得分:-1)

Jagged数组(数组数组)被认为比多维数组更快,您将获得几毫秒的加速。这值得吗?

这种优化不值得花时间在它上面。