본문 바로가기
Grasshopper

[인표몬의 그래스호퍼]주사위게임 알고리즘 만들기

by 인표몬 2024. 5. 8.
반응형

 

그래스호퍼로 주사위 게임을 만들어보았습니다.

 

처음에 알고리즘을 실행하기 위한

Button 컴포넌트를 생성합니다.

그리고 Heteroptera 라는 애드온 기능인 Seed Generator 컴포넌트와 연결해 줍니다.

 

Button 이용하여 랜덤시드 생성하기

 

Button 을 클릭 해보면, 잠깐 임의의 숫자가 생겼다가 사라지는 걸 확인할 수 있습니다.

이유는

클릭한 상태: True

클릭하지 않는 상태: False

이기 때문에, 눌렀을 때만 숫자가 생성되는 것입니다.

 

Button 컴포넌트 우클릭 후, T/F 를 서로 바꿔주도록 합니다.

 

True, False 값 바꾸는 모습.

 

 

 

이젠 클릭하면 랜덤시드가 업데이트되고 상시 숫자가 출력되고 있습니다.

 

그치만 숫자가 너무 크죠??

최소값과 최대값을 정해야할듯 합니다.

 

Construct Domain 이라는 컴포넌트를 생성해줍니다.

 

 

1 to 6 이라는 수식 생성.

 

왼쪽 사진처럼, Pannel 자체에 1 To 6 이라고 기입해도 되고,

우측 사진처럼 Construct Domain 컴포넌트에 A(최소값)=1, B(최대값)=6 을 각각 입력해도 무방합니다.

 

이것을 Range (범위) 라고 부릅니다.

 

이제 1부터 6까지의 숫자를 랜덤으로 뽑아야 주사위게임이 되므로 Random 컴포넌트를 생성하여 연결해줍니다.

 

 

 

Random 컴포넌트 연결 후 1~6 의 무작위 숫자 생성.

 

이렇게 주사위처럼 1부터 6까지의 무작위 숫자를 출력할 수 있게 되었습니다.

 

다만 소수점자리까지 표현되고 있으므로 이를 정수로 변환해주는 Integer 노드를 추가해주면 되겠죠.

 

 

 

 

 

 

 

 

이렇게 정수로 반올림해주니, 1~6 의 정수가 생성되고 있습니다.

 

여기 문제가 있습니다.

 

1 이상, 6 이하의 소수를 반올림하여 정수로 변환하는 것이므로

 

1이 등장할 범위는 1.00 ~ 1.49 약 0.5

6이 등장할 범위는 5.50 ~ 6.00 약 0.5

 

2가 등장할 범위는 1.50 ~ 2.49 약 1.0

3이 등장할 범위도 약 1.0

4가 등장할 범위도 약 1.0

5가 등장할 범위도 약 1.0

 

그러므로 1과 6과 등장할 확률이 상대적으로 낮게 됩니다.

이를 해결하기 위해선,

 

애초부터 Range를 1~6으로 설정할 게 아니라,

0~6 로 설정 후, 반올림이 아닌 올림으로 설정하는것이 적합할것입니다.

 

즉 Integer 는 소수를 정수로 변환해 주지만 디폴트값으로 반올림을 하기 때문에

Integer 가 아닌 Round 컴포넌트를 사용해야 합니다.

 

 

이로써 주사위게임을 완성해보았구요, 이런식으로 복권 번호 자동 추첨 알고리즘도 만들 수 있겠습니다.

 

글을 마칩니다.

 

반응형