Artgineer_기술 배우는 아티스트
[인표몬의 그래스호퍼]주사위게임 알고리즘 만들기 본문
그래스호퍼로 주사위 게임을 만들어보았습니다.
처음에 알고리즘을 실행하기 위한
Button 컴포넌트를 생성합니다.
그리고 Heteroptera 라는 애드온 기능인 Seed Generator 컴포넌트와 연결해 줍니다.
Button 을 클릭 해보면, 잠깐 임의의 숫자가 생겼다가 사라지는 걸 확인할 수 있습니다.
이유는
클릭한 상태: True
클릭하지 않는 상태: False
이기 때문에, 눌렀을 때만 숫자가 생성되는 것입니다.
Button 컴포넌트 우클릭 후, T/F 를 서로 바꿔주도록 합니다.
이젠 클릭하면 랜덤시드가 업데이트되고 상시 숫자가 출력되고 있습니다.
그치만 숫자가 너무 크죠??
최소값과 최대값을 정해야할듯 합니다.
Construct Domain 이라는 컴포넌트를 생성해줍니다.
왼쪽 사진처럼, Pannel 자체에 1 To 6 이라고 기입해도 되고,
우측 사진처럼 Construct Domain 컴포넌트에 A(최소값)=1, B(최대값)=6 을 각각 입력해도 무방합니다.
이것을 Range (범위) 라고 부릅니다.
이제 1부터 6까지의 숫자를 랜덤으로 뽑아야 주사위게임이 되므로 Random 컴포넌트를 생성하여 연결해줍니다.
이렇게 주사위처럼 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 컴포넌트를 사용해야 합니다.
이로써 주사위게임을 완성해보았구요, 이런식으로 복권 번호 자동 추첨 알고리즘도 만들 수 있겠습니다.
글을 마칩니다.
'Grasshopper ⚙️' 카테고리의 다른 글
산업 디자이너라면 필수로 배워야 할 그래스호퍼 (0) | 2025.03.25 |
---|---|
[인표몬의 그래스호퍼] 브랜치와 브랜치 데이터를 비교하기 - Flatten Tree (0) | 2024.12.17 |
[인표몬의 그래스호퍼]목재 데크 자동설계 알고리즘 (4) | 2024.07.30 |
[인표몬의 그래스호퍼]라이노로 견적 산출하기(part.1 환봉 무게 및 가격 산출) (0) | 2024.04.11 |
[인표몬의 그래스호퍼] 그물 자동설계 알고리즘(어린이 놀이시설) (2) | 2024.01.03 |