아하
생활

생활꿀팁

살가운이구아나240
살가운이구아나240

자바 랜덤 함수에 가중치 질문입니다

현재 로또 프로그램을 만들고 있는데여 1~45숫자에서 난수를뽑고 그난수에다가이제 가중치를줘서

1~10 에서 만약 2,4,5 에 가중치를 주고 싶으면 무슨방법으로 줘야할까요?

구글링해보니까 map이랑hashmap 을쓰는거같던데 더자세한걸 찾아보려고해도 잘안나오네요 ㅜㅜ


public void makeNum() {
lotNum = new int[7];
for(int i=0; i<7; i++) {
lotNum[i] = (int) (Math.random()*45) +1;
for(int j=0; j<i; j++) {
if(lotNum[i] == lotNum[j]) {//중복제거
lotNum[i] = (int) (Math.random()*45) +1;
j = 0;

일단이렇게 짜놨는데 여기에 가중치를 주려면 어떻게해야할까요 ?

55글자 더 채워주세요.
1개의 답변이 있어요!
  • 점잖은호랑나비234
    점잖은호랑나비234

    Random 변수와 PriorityQueue 큐를 사용하는 것이 좋다고 봅니다.

    PriorityQueue 사용 방법

    http://asuraiv.blogspot.com/2015/11/java-priorityqueue.html

    Random 변수를 사용하는 방법

    https://books.google.co.kr/books?id=Up8QAwAAQBAJ&pg=PA441&lpg=PA441&dq=java+Random+priority&source=bl&ots=asXxEEqbcY&sig=ACfU3U3wT2MAi2kMy7OK33_b_YZDOsYqvQ&hl=ko&sa=X&ved=2ahUKEwjqrozT6YDhAhUG6LwKHRzKCxQQ6AEwBHoECAYQAQ#v=onepage&q=java%20Random%20priority&f=false

    위 2개의 예제를 참조해서 작성하면

    Comparator의 compare() 메소드 내에 가중치를 주려는 숫자를 받아서 비교해서 그 결과를 돌려주는 함수를 작성하셔서 사용하면 되지 않을까 합니다.