如何随机化数组

How can I randomize an array?

本文关键字:数组 随机化      更新时间:2023-10-16

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

// 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的名义时。

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

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