gpt4 book ai didi

c++ - 在 C++ 中对数组执行随机排列

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:45 34 4
gpt4 key购买 nike

我有一个 int* 数组,我想对该数组执行随机排列。功能类似于MATLAB中的randperm。例如,我有一个数组 int* A=[0 1 1 0] 并且如果我调用 randperm(A,sizeof A) 那么一个可能的输出将是 A=[1 0 0 1]

这是我的功能,但似乎有错误。谁能确定这个错误是什么?

void randperm(int* permMatrix,int n)
{
int i, j, t;
for(i=0; i<n; i++) {
j = rand()%(n-i)+i;
t = permMatrix[j];
permMatrix[j] = permMatrix[i];
permMatrix[i] = t;
}
for(i=0; i<n; i++) {
printf("%d ",permMatrix[i]);
}
}

最佳答案

最好使用现有的标准图书馆设施。在这种情况下,<algorithm> header 有一个函数 std::random_shuffle()这正是你想要的:

#include <algorithm>

void randperm(int* matrix, int size)
{
std::random_shuffle(matrix, matrix + size);
}

关于c++ - 在 C++ 中对数组执行随机排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19805621/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com