你可以尝试这样的事情:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int *create_array(char category, int n);
int
main(int argc, char const *argv[]) {
time_t t;
int *array;
int i, n;
char category;
srand((unsigned)time(&t));
printf("Enter category: ");
if (scanf("%c", &category) != 1) {
printf("Invalid category.\n");
exit(EXIT_FAILURE);
}
printf("Enter n numbers: ");
if (scanf("%d", &n) != 1) {
printf("Invalid n value.\n");
exit(EXIT_FAILURE);
}
array = create_array(category, n);
printf("Your n random numbers between 0-10:\n");
for (i = 0; i < n; i++) {
printf("%d ", array[i]);
}
free(array);
return 0;
}
int
*create_array(char category, int n) {
int *array;
int i, candidate;
array = malloc(n * sizeof(*array));
for (i = 0; i < n; i++) {
candidate = rand() % 10;
array[i] = candidate;
}
return array;
}
这些答案可以帮助:srand函数将返回相同的值(http://stackoverflow.com/questions/14494375/srand-function-is-returning -same-values/14494428#14494428)和[为什么rand()在此for循环中使用srand(time(null))返回相同的值?](http://stackoverflow.com/questions/10644593/why-does -rand返回最相同值-使用-srandtimenull-在此结果为环/ 10644601#10644601) – Gomiero