Programming Language/C언어

[C언어] 중복 없이 난수를 입력 받은 개수만큼 생성하는 함수

lxvxxu 2024. 11. 9. 00:55

https://github.com/lxvxxu/C/blob/main/%EC%A4%91%EB%B3%B5%20%EC%97%86%EC%9D%B4%20%EB%82%9C%EC%88%98%EB%A5%BC%20%EC%9E%85%EB%A0%A5%20%EB%B0%9B%EC%9D%80%20%EA%B0%9C%EC%88%98%EB%A7%8C%ED%81%BC%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%ED%95%A8%EC%88%98.c

 

C/중복 없이 난수를 입력 받은 개수만큼 생성하는 함수.c at main · lxvxxu/C

C언어를 공부합니다! Contribute to lxvxxu/C development by creating an account on GitHub.

github.com

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


void RandNum(int size_arr, int range) {

    int* my_arr;
    int temp = 0;

    my_arr = (int*)malloc(sizeof(int) * size_arr);
    my_arr[0] = rand() % range + 1;
    // 

    // printf("my_arr[0] = %d  ", my_arr[0]);
    printf("%d  ", my_arr[0]);

    for (int i = 1; i < size_arr; i++)
    {
        temp = rand() % range + 1;

        int k = 0;
        do
        {
            if (temp == my_arr[k])
            {
                temp = rand() % range + 1;
                k = 0;
            }
            else
            {
                k++;
            }

        } while (k < i);

        my_arr[i] = temp;
        // printf("my_arr[%d] = %d  ", i, my_arr[i]);
        printf("%d  ", my_arr[i]);
    }

    free(my_arr);

}

void myInputBuffer(void) {
    while (getchar() != '\n');
}


int main(void) {

    srand(time(NULL));
    int my_num = 0, my_range = 0;
    
    printf("생성하실 난수의 개수를 입력해주세요.\n입력 : ");
    scanf("%d", &my_num);
    myInputBuffer();
    printf("생성하실 난수의 최댓값(range)를 입력해주세요.\n입력 : ");
    scanf("%d", &my_range);
    myInputBuffer();

    RandNum(my_num, my_range);

    return 0;
}