我正在尝试编写一个程序来生成随机数数组,其中在给定范围内没有两个单元格包含相同的数字。
示例:要求它创建一个 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/