1 부터 45 까지 숫자를 랜덤하게 6개의 숫자를 뽑아야 하는데 중복 안되게 해야 한다?
처음에는 간단하게 생각했습니다.
Random 이라는 함수가 있을꺼고 당연히 랜덤하게 숫자가 나오면 문제가 되지 않겠지.
그래서 아래 RandBetween( Bottom, Top ) 아래 링크 참고를 해서 열심히 봤습니다.
https://docs.microsoft.com/ko-kr/power-platform/power-fx/reference/function-rand
문제는 중복되면 안 된다.
고민
첫번째 랜덤 값을 가져와서 두번째 가져올 때는 첫번째 가지고 값가 동일 한 값이 나오면 다시 돌려서 같지 않은 값이 나올 때까지 하면 되지 않을까?
위의 방식으로 하면 두번째 세번째… 넘 어려워 조건도 까다로워 지고..
의외로 방식을 다르게 고민 꼭 랜덤이어야 하나 숫자가 1 ~ 45 까지로 정해져 있으니
Sequence(45) 이렇게 하면 1부터 45의 숫자가 나타나게 되니 이걸 활용하기로 함.
Sequence 함수는 1, 2, 3과 같은 순차적 번호로 구성된 하나의 열 테이블을 생성합니다. 열의 이름은 Value 입니다. Sequence( 4 )는 [1,2,3,4]와 같습니다.
https://docs.microsoft.com/ko-kr/power-platform/power-fx/reference/function-sequence
변수에 1부터 45까지의 값을 담아서 그걸 섞으면 어떻게 될까?
변수에 값을 선언 Set( VariableName, Value )
https://docs.microsoft.com/ko-kr/power-platform/power-fx/reference/function-set
Shuffle 함수로 레코드 다시 정렬
Shuffle( Table )
https://docs.microsoft.com/ko-kr/power-platform/power-fx/reference/function-shuffle
결과는 허무할 정도로 단순해 져서 너무 맘에 드네요.
Set(varNumber,Shuffle(Sequence(45)))
이제 값을 변수에서 첫번째부터 6개의 값을 꺼내면 될 듯 합니다.
그래도 마지막 값은 제일 마지막 값으로..
Power Apps의 First, FirstN, Index, Last 및 LastN 함수
https://docs.microsoft.com/ko-kr/power-platform/power-fx/reference/function-first-last
First(varNumber).Value
Index(varNumber,2).Value
Index(varNumber,3).Value
Index(varNumber,4).Value
Index(varNumber,5).Value
Last(varNumber).Value
이제 Lotto 번호 만들기 버튼을 누르면 아래 숫자가 변경되는 것을 확인할 수 있습니다.
[결과 화면]
댓글