2013-12-17 3 views
0

현재 정적 번호가있는 자바에서 다음 코드를 편집하여 범위의 숫자를 표시하려고합니다.이 코드는 블록의 특정 지점과의 거리를 보여 주므로 그것은 어려운) 블록을 찾을 수 있습니다 :범위의 다중 가중 난수

int R = getBlockTypeDistance(event.getClickedBlock().getLocation(), stid); 
if (R == -1){ 
    player.sendMessage(ChatColor.BLUE + plugin.getConfig().getString("text.very_cold")); 
} else if(R < 12) { 
    player.sendMessage(ChatColor.RED + plugin.getConfig().getString("text.very_hot")); 
} else if(R < 18){ 
    player.sendMessage(ChatColor.RED + plugin.getConfig().getString("text.hot")); 
} else if(R < 27){ 
    player.sendMessage(ChatColor.GOLD + plugin.getConfig().getString("text.warm")); 
} 

을 나는 다음과 범위가 각각 다른 경우 문 무작위로 생성 된 번호를 찾고 있어요 대신 R < (12)의

, 0과 15

의 범위

대신 R < 18 범위 대신 R < 27

15 내지 22의 모든 범위는 75 % 미만의 숫자 높아지고의 (90 %의 확률로는 "중량"을 가져야

22 ~ 30의 범위 범위)

감사합니다. 감사합니다.

+0

가능한 복제 : http://stackoverflow.com/q/363681/2081889 –

+0

그는 범위를 가중치를 올려 더 높은 숫자가 나타날 확률을 높입니다. 확실히 동일하지 않습니다. –

답변

0

가중치가없는 경우에는 random.nextInt(max-min+1) + min;으로 가서 오류를 하나씩 확인하십시오.

가중치는 무엇을 의미합니까?

0.9^13이 0.25에 매우 가깝다는 것이 밝혀졌습니다 (내 수학이 정확하다면 다시 확인하십시오!). 따라서 0-1.0의 범위에서 임의의 값을 가져 와서 13의 힘으로 올리면 0.25의 90 % 미만의 숫자를 얻을 수 있습니다. 1-x로 던져서 0.75 90 %보다 크게 만듭니다.

+0

그는 내 마음 속에서 질문이 지나치게 모호하고 답할 수없는 (가중 될 때까지) 가중치를 사용하여 의미하는 것을 지정하지 않습니다. –

+0

내 말은 더 높은 숫자가 더 많이 나타남을 의미합니다. 거리 물건이므로 0-5로 표시하고 싶지는 않습니다. 0-15 -5 – mobile

+1

이것은 단지 기본 확률입니다 @ 모바일. 그것을 할 수있는 방법이 많이 있지만, 무게를 얼마나 많이 쓰길 원하는지 알려줄 필요가 있습니다. 조금 더 구체화하십시오 –

0

내가 할 수있는 한 가지 방법이 있습니다. 그 숫자가 1에 해당하는 경우 (100) - 그것이 무엇이다하는 것은 1 사이의 난수를 생성 기본적으로

private static int generateNumber(int min, int max) 
    { 
     Random rnd = new Random(); 
     int randomInt; 

     int weightedMin = (int)Math.round((max - min) * .75) + min; //Create a minimum number that is 75% of the way through the range 

     //Generate a random number between 1 - 100 
     //If that number is between 0 and 90 then generate the top end 
     if ((rnd.nextInt(101) + 1) <= 90) randomInt = rnd.nextInt((max - weightedMin) + 1) + weightedMin; 
     else randomInt = rnd.nextInt((max - min) + 1) + min; 

     return randomInt; 
    } 

: 다른 사람이 더 나은 아이디어 나 개선 사항이 있는지 의견을 조심하지만 내가 생각 해낸 것입니다 90을 포함하면 90 % 확률 범위에 있음을 의미하고 75 % + 범위를 생성합니다. 그렇지 않으면 75 %를 생성합니다. 이게 말이 돼?

+0

내 답변을 몇 번이나 편집 할 수 있습니까? : P는 롤 –