小编use*_*015的帖子

如何创建数组的随机排列?

我在C中编写了这个函数,我想让它创建一个随机排列或从1到n的数字列表.我无法让它没有重复的数字.所以,如果你有n = 4,我希望它只返回一个包含1-4的随机数组,例如:{1,3,4,2}

int* random(int n) 
{
    int* r = malloc(n * sizeof(int));
    // initial range of numbers
    for(int i=0;i<n;++i){
        r[i]=i+1;
    }
    // shuffle
    for (int i = 1; i <= n; ++i){
        int j = rand() % i;
        r[i] = r[j];
        r[j] = i;
  }
  return r;
}
Run Code Online (Sandbox Code Playgroud)

c

10
推荐指数
1
解决办法
8043
查看次数

标签 统计

c ×1