랜덤으로 중복없이 수 뽑는거 연습
간단하게 할거면 변수 4개 설정해놓고 하나씩 random()해서 생성해도 되지만 반복문 연습겸 + 중복 제거까지 신경쓰기
Math.random 범위 항상 헷갈리는데
0 < Math.random < 1 해놓고 각 부등식에 *10 , *9했을 때 0.00001 , 0.99999 값이 어디까지 가능한지 따지면 쉽게 가능함
여기서 조금 헷갈리는게 push는 인수로 특정 값을 받음 - 그래서 그냥 그 값을 넣어주는거고
splice는 index번호를 받음 - 그래서 push에는 arr[index]로 배열 값을 넣어줘야 되는거고 splice에는 그냥 index번호만 써주면 됨 == 어차피 같은 값을 가르키는건 마찬가지
그러면 내가 뽑아온 랜덤 값이 index번호로 들어가서 해당 값을 randNum4라는 배열에 넣어주고 , 넣어준 그 값은 제거를 해주기 위해 splice함수로 제거를 해주면 됨.
근데 이렇게만 하면 undefined가 뜰 때가 있음
- 왜냐하면 저 랜덤값은 0부터 8까지 랜덤으로 생성되는데 만약에 한 3번째에서 랜덤값이 8이 생성됨 - 여기서 뽑기라는 배열의 길이가 8이 안됨 ( splice로 2번 잘랐으니깐 )
그렇기 때문에 for문이 실행될때마다 length를 고려해줘야됨 (저기 주석으로 써놓은 값을 고려해줘야됨)
가장 간단한 방법은 그냥 9-i 해주면 됨 (처음에 바로 생각난건데 괄호 안넣고 하다가 안되는건줄 알고 nn분 더 고민함;;)
그러면 첫번째는 랜덤값이 0~8 / 두번째는 0~7 / 세번째는 0~6 / 마지막은 0~5까지로 생성되니까 없는 index값을 push하고 그럴일이 없음.
아니면 Math.random()*여기서뽑기.length도 가능
반복문에서 이런 일이 생기면 이때는 ~조건이 필요하고 , 다음에는 ~조건이 필요한데 이걸 그때마다 i값으로 맞춰줄 수 있는지?를 생각하는게 좋은듯