개인 자료란 (JE)

  서버 커뮤니티

Profile 하우요 대표칭호 없음
Profile

질문하기 스크립트

여러개의 랜덤 값을 서로 다른 수가 되게 출력하는 방법이 궁금합니다

2023.07.08 조회 수 37 추천 수 0
이해도 초보자 
게임버전 (JE) 1.19.3 
게임버전 (BE) 관련없음 
스크립트 버전 2.6.4 

command /랜덤:

@trigger:

@@set {A} to random integer between 1 to 16

@@set {B} to random integer between 1 to 16

@@set {C} to random integer between 1 to 16

@@set {D} to random integer between 1 to 16


이런식으로 제작해서 명령어를 치게 되면 {A}랑 {B}가 같은 값이 될 수도 있는데

4개의 변수가 모두 다른 값이 되도록 랜덤한 수를 부여할 수 있는 방법이 궁금합니다

선생님들 도와주세요

3개의 댓글

코코냐
2023.07.08

이미 뽑힌 숫자를 제외하려면 가장 기본적인 알고리즘은 다음과 같습니다.

A를 결정 -> 루프를 돌려서 A랑 다를때까지 B 결정 -> 루프를 돌려서 A, B와 다를때까지 C 결정 -> 루프를 돌려서 A,B,C와 다를떄까지 D 결정

이 경우 극악의 확률로 수십, 수백번까지도 돌아갈수 있어, 다른 방법도 있습니다.

A를 결정 -> B를 1~15로 결정하고, A보다 크거냐 같으면 1을 더함 -> C를 1~14로 결정하고, 처음 값이 A보다 크거냐 같으면 1을 더하고, 처음 값이 B보다 크거냐 같으면 1을 더함 -> D를 1~13로 결정하고, 처음 값이 A보다 크거냐 같으면 1을 더하고, 처음 값이 B보다 크거냐 같으면 1을 더하고, 처음 값이 C보다 크거냐 같으면 1을 더함

 

사실 가장 좋은 방법은, 오히려 1~16을 배열에 넣은 뒤에 섞을 수 있다면 그게 더 쉬울겁니다.

하우요
2023.07.08
@코코냐

2번째 방법의 경우,

{A} = 10으로 결정, {B}=4이면 {A}보다 작아서 {B}=4, {C}=3이면 {A}와 {B}보다 작아서 {C}=3, {D}=8이면 {A}보단 작았는데 {B}보다 크고 {C}보다 커서 {D}=10으로

{A} = 10, {B}=4, {C}=3, {D}=10이 되서 중복되는거 아닌가요?

제가 잘 이해하지 못한건가

코코냐
2023.07.08
@하우요

각 숫자 구간을 비우기 위함입니다. 처음 값은 잘못 적은게 맞습니다. 처음 값이 아니라 더한 값을 기준으로 해주세요.

뉴스 및 창작물
/files/thumbnails/576/775/003/262x150.crop.jpg?20240426232553

아티클

이달의 블록: 단단한 진흙

학교가기싫다

2024-04-26

0

/files/thumbnails/115/774/003/262x150.crop.jpg?20240428135129

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1