c - 随机数生成器生成错误的数字集

标签 c arrays pointers random

我正在尝试编写一个程序来生成随机数数组,其中在给定范围内没有两个单元格包含相同的数字。

示例:要求它创建一个 4 的数组应该会产生类似:4 2 1 3,而我得到的是:4 2 1360726912 245694014

#include <stdio.h>
#include <time.h>

#define TRUE 1
#define FALSE 0

// generates a random number within a given range
int random(int from, int to) {
  int 
    high = to + 1,
    low = from;

  return (rand() % high - low) + low;
}

// returns a random number different from any number in the array
int gen_different(int arr_len, int arr[]) {
  int rand_val = random(1, arr_len);
  int matches = FALSE;
  for(int i = 0; i < arr_len; i++) {
    if(rand_val == arr[i]) matches = TRUE;
  }

  if(matches) gen_different(arr_len, arr);
  return rand_val;
}

// generates an array with a given number of cells, containing all different numbers
void gen_arr(int count, int arr[]) {
  for(int i = 0; i < count; i++)
    arr[i] = gen_different(count, arr);
}

int main() {
  srand(time(NULL));
  printf("Please enter an array number: ");
  int num = 0;
  scanf("%d", &num);
  int* arr[num];
  gen_arr(num, arr);

  for(int i = 0; i < num; i++) {
    printf("%d ", arr[i]);
  }

  printf("\n");
  return 0;
}

我知道我的问题与指针有关,但我不太确定应该更改什么才能使其正常工作。有什么帮助吗?

最佳答案

您正在将 arr[num] 初始化为

int* arr[num]; //array of pointers to integers

应该是这样的

int arr[num]; ////array of integers

关于c - 随机数生成器生成错误的数字集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25766633/

相关文章:

c - 使用指针的指针来引用矩阵

java - 比较Java中的两个基元数组?

c - 在 C 中访问命令行参数

c - 将结构传递给接受 void * 参数的函数的问题

c - 找到一个c程序的输出

c++ - vector 数组,计算点积

C++:如何将静态数组分配给结构内的指针

c++ - 对数组使用算术

c - 使用指针初始化结构体的成员 (C)

c - 如何让父进程和子进程修改并读取相同的变量?