Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

설명

random_read의 random()함수 버젼이다. 중복되지 않는 random seed 값을 생성하기 위해서 gettimeofday()의 시간값을 이용했다.

사용방법

int getrandom(void *rand, size_t size);
  1. rand : 랜덤값을 저장할 공간
  2. size : size크기 만큼 rand에 저장한다.
#include "myrand.h"

int main()
{
    char ran[32] = {0x00,};
    int i;
    getrandom(ran, 32);

    for(i = 0; i < 32; i++)
    {
        printf("%c\n", ran[i]);
    }
}
위의 코드는 32바이트 크기(512bit)의 랜덤값을 생성한다. 다음과 같이 출력 값을 테스트 해 볼 수 있다. 하나의 라인으로 출력되지만 쉽게 보여주기 위해서 개행 시켰다.
# ./myrand | mimencode 
WQpsCtgKLAqYCsQKpgprChsKTwrHCjcKkgorCp4KQwqvCogKCgo6CtUKQgohCngKZQrNCtAK
DAqrClIKRwp3Cg==

코드

#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <string.h>

int getrandom(void *rand, size_t size)
{
    struct timeval tp;
    int i = 0;
    int ran;

    gettimeofday(&tp, NULL);
    srandom(tp.tv_sec | tp.tv_usec);

    while(1)
    {
        if (!(size / (4*(i+1)))) break;

        ran = random();
        memcpy(rand+(i*4), (void *)&ran, 4);
        i++;
    }
}

참고 문헌

  1. random_read
  2. /dev/random을 이용한 랜덤값 생성

변경사항