Arduino에서 난수 생성

Ammar Ali 2023년10월12일
Arduino에서 난수 생성

이 튜토리얼에서는 Arduino의 random() 함수를 사용하여 난수를 생성하는 방법에 대해 설명합니다.

random() 함수를 사용하여 Arduino에서 난수 생성

난수 생성기를 사용하여 주어진 숫자 범위 사이에 난수를 생성합니다. 예를 들어, 이를 사용하여 경품 당첨자를 선택할 수 있습니다.

random() 함수를 사용하여 Arduino에서 난수를 생성할 수 있습니다.

통사론:

random(maxVlaue);
random(minValue, maxValue);

코드의 첫 번째 줄에서 범위의 최대값만 전달하면 함수는 최소값으로 0을 사용합니다. random() 함수의 첫 번째 및 두 번째 인수를 사용하여 최소 및 최대 범위를 정의할 수도 있습니다.

범위의 최소값은 포함되는 반면 최대값은 제외됩니다. 예를 들어, 0에서 10 사이의 범위를 정의하면 난수 시퀀스에는 0이 포함되지만 10은 포함되지 않습니다.

random() 함수를 사용하기 전에 randomSeed() 함수를 사용하여 초기화해야 합니다. 난수 생성기를 초기화하려면 randomSeed() 함수 내에서 long 데이터 유형의 난수를 전달해야 합니다.

무작위로 이전 숫자와 동일한 숫자 시퀀스를 원한다고 가정합니다. randomSeed() 함수 내에서 동일한 숫자를 전달해야 합니다.

다른 숫자 시퀀스를 원하면 난수 생성기를 초기화할 때마다 다른 숫자를 사용해야 합니다. 이 경우 Arduino의 모든 아날로그 핀을 사용할 수 있습니다.

아날로그 핀과 연결된 입력이 없으면 핀은 부동 값 또는 임의 값을 갖습니다. analogRead() 함수를 사용하여 임의의 값을 읽을 수 있습니다.

예를 들어 random()을 사용하여 0에서 100 사이의 난수를 생성해 보겠습니다.

long MyRnd;

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));
}
void loop() {
  MyRnd = random(100);
  Serial.println(MyRnd);
  delay(500);
}

출력:

21
17
20
11
46
51
41
71
2
74

loop() 함수 안에 난수 생성기를 배치했기 때문에 난수는 계속 생성됩니다. 특정 횟수만큼 난수를 생성하려면 한 번만 실행되는 setup() 함수 내부에 루프를 사용할 수 있습니다.

random() 함수 내에서 정의한 범위 값은 32비트일 수 있습니다. 더 큰 값을 사용하면 함수에서 오류가 발생하지 않지만 결과는 예상한 것과 다릅니다.

randomSeed() 함수 내에서 1과 같은 동일한 숫자를 사용하고 코드를 다시 시작하면 난수 시퀀스가 ​​동일합니다.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

관련 문장 - Arduino Function