하우요
대표칭호 없음
이해도 | 초보자 |
---|---|
게임버전 (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개의 변수가 모두 다른 값이 되도록 랜덤한 수를 부여할 수 있는 방법이 궁금합니다
선생님들 도와주세요
코코냐
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.082번째 방법의 경우,
{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각 숫자 구간을 비우기 위함입니다. 처음 값은 잘못 적은게 맞습니다. 처음 값이 아니라 더한 값을 기준으로 해주세요.