2016-10-23 12 views
-2
int* create_array(char category, int n){ 
    int *a; 

    a = malloc(n* sizeof(int)); 

    for (int i = 0; i < n; i++) { 
    int x; 
    srand(time(NULL)); 
    x = rand(); 
    a[i] = x; 
    } 

Когда я печатаю этот код, он просто печатает ту же случайную переменную 'n' раз.Создайте динамический массив и присвойте ему случайные целые значения?

+3

Эти ответы могут помочь: [функция srand возвращает те же значения] (http://stackoverflow.com/questions/14494375/srand-function-is-returning -same-values ​​/ 14494428 # 14494428) и [Почему rand() возвращает одно и то же значение с помощью srand (time (null)) в этом цикле for?] (http://stackoverflow.com/questions/10644593/why-does -rand обратный-The-же значение, используя-srandtimenull-в-это-для цикла/10644601 # 10644601) – Gomiero

ответ

0

Вы можете использовать srand(getpid() или вы можете указать диапазон случайных чисел, используя x=rand()%11, генерирует от 0 до 10;

0

Вы можете попробовать что-то вроде этого:

#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; 
}