어그로 미안하고 질문받아라
중복없는 난수 생성 방법중에
1. 똑같은 값이 전에 생성된 적 있나 확인해서 생성된 적 있으면 다시 난수 뽑는 방법
2. 최소 값부터 최대 값까지 전부 배열에 저장해놓고 섞는 방법
근데 1번은 난수를 뽑는 횟수가 많으면 이전에 뽑은 그 많은 수를 비교하고
2번은 0~9999 까지의 수를 3개 뽑는거면 숫자 3개 뽑자고 10000개 크기의 배열을 만들어야해서
너무 비효율적인거 같단말이야.... 더 효율적인 방법 아는 고수 있음?
뭔 용도로 쓰려고 하는거임?
최소 값은 반드시 0이고 최대값은 50 이하 정밀 할 필요는 없음
우선 1번보단 2번이 효율적이긴 함 1번 방법은 중복이 없는 숫자를 특정 범위에서 뽑을 때 결국 3개만 뽑아도 중복이 될 확률이 범위가 좁으면 좁을 수록 높아서 무의미하고
그렇긴 한데 최대값이랑 뽑아야 하는 난수의 개수차이가 얼마나 날지 일정하지가 않아서 뭔가 아쉬움
아래 댓글처럼 링크드해시셋으로 계속 랜덤 숫자 추가해봐도 좋을 듯? 500까지면 while로 size 500까지 계속 add하면 되니까
실제 성능은 비교해봐야하겠지만
링크드해시셋 말고 그냥 해시셋 1번처럼 쓰라는거. o(1)이니까
ㅇㅋ 고마워
걍 해시셋 쓰면 되잖아
데이터가 적으니까 그냥 셋에 집어넣고 쓰셈. 일정 자리수 이상 올라가면 그냥 돌려도 웬만하면 안 걸림