개인 자료란 (JE)

  서버 커뮤니티

Profile 하우요 대표칭호 없음
Profile

질문하기 스크립트

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

2023.07.08 조회 수 38 추천 수 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/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

벌레먹은 돌 빠르게 제거하는 법

GlassesFilm

2024-05-15

0

/files/thumbnails/797/788/003/262x150.crop.jpg?20240515090924

건축

마인크래프트로 구현한 카르카손 보드게임

Warak

2024-05-15

1

/files/thumbnails/487/784/003/262x150.crop.jpg?20240508233607

모드

Windows Borderless 모드에서 악성코드 발견

학교가기싫다

2024-05-08

1

/files/thumbnails/384/778/003/262x150.crop.jpg?20240512002324

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0

/files/thumbnails/855/781/003/262x150.crop.jpg?20240505141129

레드스톤

레이저 클리너

GlassesFilm

2024-05-05

1