Programming/Unity

가중치 랜덤

Inner-Peace 2020. 8. 12. 10:13
반응형

private int GetRandomIndex() {
     int[] weights = {1, 3, 5, 6, 5, 3, 1, 3};   <- 가중치에 대한 정보

     int total = 0;
     for (int i = 0; i < weights.Length; ++i) {
          total += weights[i];
     }

     int pivot = Mathf.RoundToInt(total * Random.Range(0.0f, 1.0f));    <- 해당하는 위치 뽑기
     int weight = 0;

     for (int i = 0; i < weights.Length; ++i) {
          weight += weights[i];
          if (pivot <= weight) {
               return i;
          }
     }

     return defaultIndex;   <- 안뽑혔을경우 예외처리
}

반응형