본문 바로가기

취미, 일기, 생각들/아라리오

가중치를 적용하여 랜덤하게 문자 뽑아내기


package test.pattern;

import java.util.*;

public class RandomRange {
 public static void main(String args[]){
  System.out.println("Random Range Start!");
  Random ran = new Random(System.currentTimeMillis());
  
//range 배열에 들어가는 값들이 가중치가 된다. 1.5배 이런식으로는 안됨. 
//만일 int range[] = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10,}; 이면 균일 확률
  int range[] = {25000, 7000, 450, 30000, 100, 27430, 10000, 19, 1};
  int rangeCum[] = new int[range.length];
  int tempCum=0;
  for(int i=0;i<range.length;i++){
   tempCum += range[i];
   rangeCum[i] = tempCum;
  }
  
  
  int a = 0, b=0, c=0, d=0, e=0, f=0, g=0, h=0, i=0;
  
  for(int z=0;z<100000;z++){
   int dom = ran.nextInt(rangeCum[range.length -1])+1;
   if(dom > 0 && dom <= rangeCum[0] ){
    a++;
 //   code = ""; //하이퍼미트론강화제
   }else if(dom > rangeCum[0] && dom <= rangeCum[1]){
    b++;
 //   code = ""; //경험치
   }else if(dom > rangeCum[1] && dom <= rangeCum[2]){
    c++;
 //   code = ""; //로스트파츠B
   }else if(dom > rangeCum[2] && dom <= rangeCum[3]){
    d++;
 //   code = ""; //미트론연료
   }else if(dom > rangeCum[3] && dom <= rangeCum[4]){
    e++;
 //   code = ""; //기가스쿠폰
   }else if(dom > rangeCum[4] && dom <= rangeCum[5]){
    f++;
 //   code = ""; //카체이스
   }else if(dom > rangeCum[5] && dom <= rangeCum[6]){
    g++;
 //   code = ""; //만미토
   }else if(dom > rangeCum[6] && dom <= rangeCum[7]){
    h++;
 //   code = ""; //백만미토
   }else if(dom > rangeCum[7] && dom <= rangeCum[8]){
    i++;
 //   code = ""; //크롬휠영구
   }
  }
  
  System.out.println("a = " + a);
  System.out.println("b = " + b);
  System.out.println("c = " + c);
  System.out.println("d = " + d);
  System.out.println("e = " + e);
  System.out.println("f = " + f);
  System.out.println("g = " + g);
  System.out.println("h = " + h);
  System.out.println("i = " + i);
 }
}

'취미, 일기, 생각들 > 아라리오' 카테고리의 다른 글

전각 반각 구분하기  (0) 2008.12.09
20080619정기점검 Check 사항  (0) 2008.06.18