들어가며
랜덤은 정말 다양한 프로젝트에서 사용할 수 있는 기능입니다. 예를 들어, 무작위 이벤트를 발생시키거나, 임의의 값이 필요한 경우 등에서 활용할 수 있습니다. 이번 글에서는 아두이노 랜덤 사용 방법을 익히고, 아두이노에서 진짜 랜덤한 숫자를 생성하는 방법을 알아보도록 하겠습니다. 특히, 시드 값 고정을 피해 무작위성(Randomness)을 확보하는 방법도 함께 알아보도록 하겠습니다.
준비물
간단하게 랜덤을 발생시키고, 시리얼 모니터를 통해 결과를 확인하도록 하겠습니다. 아두이노 보드와 IDE만 있으면 됩니다.
- 필요한 하드웨어 목록
- 아두이노 보드
- 필요한 소프트웨어 목록
- 아두이노 IDE
기본 예제
예제 코드 소개
랜덤한 숫자를 생성하고 그 숫자를 시리얼 모니터에 출력하는 예제를 한번 살펴볼게요.
아두이노 랜덤 함수에 대한 자세한 내용은 공식 문서 아두이노 – random() 를 통해 알아보실 수 있습니다.
예제 코드
void setup() {
Serial.begin(9600);
delay(1000); // 1초 대기
Serial.println("randomNumber");
}
void loop() {
// 0부터 99 사이의 랜덤 숫자 생성
int randomNumber = random(0, 100);
Serial.println(randomNumber);
delay(1000); // 1초 대기
}
코드 설명
- setup(): 시리얼 통신을 설정합니다.
- loop(): 0부터 99 사이의 랜덤 숫자를 생성하여 시리얼 모니터에 출력합니다.
코드 실행 방법
- 아두이노 보드와 컴퓨터를 연결하고, 아두이노 IDE를 엽니다.
- 위의 코드를 복사하여 새 스케치에 붙여넣기 합니다.
- 보드와 포트를 설정한 후 코드를 업로드합니다.
- 시리얼 모니터를 열어 랜덤 숫자가 출력되는 것을 확인합니다.
코드 실행 결과 확인
- 시리얼 모니터에서 0부터 99 사이의 숫자가 무작위로 출력되는 것을 볼 수 있습니다.
- 하지만 기본 예제처럼 랜덤을 생성할 경우 동일한 숫자 패턴이 반복될 수 있습니다.
(사용하는 보드에 따라 결과가 달라질 수 있어요. 제가 사용중인 ESP32 개발보드에서는 완전 무작위로 난수가 생성되고 있었습니다.)

아두이노 랜덤 사용 시 주의점
위 실행 결과에서 알 수 있듯 별도의 랜덤 시드를 설정하지 않으면, 아두이노는 매번 동일한 시드 값을 사용하여 동일한 숫자 패턴을 반복할 수 있습니다. 이를 방지하기 위해 랜덤 시드를 설정하는 것이 좋은데요, 그 방법은 아래와 같습니다.
랜덤 시드를 아날로그 핀으로 지정하는 방법
아날로그 핀에서 읽은 값을 시드로 사용하면 무작위성을 높일 수 있습니다. 아날로그 핀은 주변 환경의 전기적 노이즈나 센서의 작은 변화에도 민감하게 반응하기 때문에, 이 노이즈에의해 흔들리는 값을 시드로 사용한다면 랜덤성을 부여할 수 있죠. 다음은 이를 구현한 예제입니다.
예제 코드 (랜덤 시드 설정)
int randomSeedPin = A0;
void setup() {
Serial.begin(9600);
// 아날로그 핀에서 무작위 값을 읽어 시드로 설정
randomSeed(analogRead(randomSeedPin));
delay(1000); // 1초 대기
Serial.println("randomNumber");
}
void loop() {
// 0부터 99 사이의 랜덤 숫자 생성
int randomNumber = random(0, 100);
Serial.println(randomNumber);
delay(1000); // 1초 대기
}
코드 설명
- randomSeedPin: 아날로그 핀 A0를 시드로 사용하기 위해 정의합니다.
- setup(): 시리얼 통신을 설정하고, 아날로그 핀에서 값을 읽어 랜덤 시드를 설정합니다.
- loop(): 0부터 99 사이의 랜덤 숫자를 생성하여 시리얼 모니터에 출력합니다.

출력되는 모습을 보니 조금 더 랜덤에 가까워진 모습을 볼 수 있다.
랜덤 시드에 A0핀을 넣었을 때 랜덤성이 증가한 이유
아날로그 핀은 주변 환경의 전기적 노이즈나 미세한 변화에도 민감하게 반응합니다. 이 노이즈는 예측할 수 없을 정도로 변화하기 때문에, 아날로그 핀에서 읽은 값은 매우 무작위적인 요소를 포함하게 됩니다. 이러한 값들을 랜덤 시드로 사용하면, 더욱 예측 불가능하고 다양한 랜덤 숫자를 생성할 수 있게 되는 원리를 이용한 진짜 랜덤 만들기 방법인거죠.
마무리
이번 프로젝트에서는 아두이노에서 랜덤 숫자를 생성하는 기본 방법과, 무작위성을 높이기 위해 아날로그 핀을 활용한 랜덤 시드 설정 방법을 배웠습니다. 랜덤 숫자를 생성하는 방법은 다양한 프로젝트에서 유용하게 활용될 수 있으며, 이를 통해 더 많은 응용 프로젝트에 도전해볼 수 있습니다. 더 복잡한 랜덤 요소를 추가하거나, 이를 활용한 다양한 프로젝트에 도전해볼 수 있겠네요.