我如何随机化一个数组?

时间:2015-04-26 23:32:40

标签: c++ arrays memory random

以下是我遇到问题的程序部分:

// precondition: board is initialized
// postcondition: board is shuffled by randomly swapping 20 values
void shuffle(int board[][NCOLS]) {
    int num = rand();
    num = num %6 + 1;
    for (int i = 0; i < 20; i++) {

    }
}

很确定我已经错了,我想我可能需要rand函数,但我不确定for循环是如何工作的。

基本上有6张图片,它们分为4列,这是一个记忆游戏,当时它们停留在同一个地方。我需要做到这一点,以便它们是随机的,并且在你无法看到它们的一侧翻转但是我无法理解它。

我不知道如何随机化列,特别是当它们只是在简单的电路板和NCOLS的名称下。

1 个答案:

答案 0 :(得分:2)

我可以看出为什么这很难 - random_shuffle更喜欢一维数组,并且你有一个二维数组。幸运的是,由于数组是连续的,这意味着2D数组也可以作为一维数组访问 - 它只是内存中的NCOLS x NROWS元素:

auto begin = &(board[0][0]);
auto end   = begin + NCOLS*NROWS;