특정 범위에서 가장 자주 임의 생성하지만,

RaylessTiKi :

나는 사람의 수축기 혈압을 시뮬레이션 특정 작업을 만들어야합니다, 그래서 난이 시도 :

rand = new Random();
timer = new Timer();
timer.schedule(new TimerTask() {

@Override
public void run() {
    Integer sbp = rand.nextInt((130 - 80) + 1) + 80;
        lblSBPCounter.setText(Integer.toString(sbp));           
}
}, 1000, 120000);

문제는 사용자가 문제로되어, 90 이하 또는 120 이상된다면 수축기 압력은 90 내지 120의 범위를 갖는 것이다. 코드에서 난 (130), 난수 (80)에서 2 분마다 생성하려고하므로 문제는 임의의 함수에 따라 상기 범위보다 꽤 자주가는 점이다. 내 질문은 그래서 : 내가 함수가 90에서 120을 위 120 적은 숫자 90에서 더 많은 번호를 생성 할 수 있습니까? 1-2 시간마다 한 수처럼?

그렉 맥 :

당신은 Random.nextGaussian () 메소드를 사용한다. 그래서이 예에서 결과 0.3 % 미만 90 미만이어야한다하거나가 80 ~ 130 범위를 벗어나는 경우 (120) 상기 I도 수를 재생성 조각을 첨가하여, 평균 및 표준 편차 (105), 10을 선택했다.

rand = new Random();
timer = new Timer();
int mean = 105, standardDeviation = 5;
timer.schedule(new TimerTask() {

@Override
public void run() {
    Integer sbp;
    do
    {
        sbp = (int) Math.round((rand.nextGaussian() * standardDeviation) + mean);
    } 
    while(sbp < 80 || sbp > 130)

    lblSBPCounter.setText(Integer.toString(sbp));           
}
}, 1000, 120000);

(또는이 질문에 걸쳐 오는 사람이) 표준 편차를 선택하는 방법을 모르는 경우, 규칙은 결과 68.27 %가 결과의 평균, 95.45 %의 하나의 표준 편차 내에 2 개 표준 편차 내에서, 그리고 것입니다 결과 99.73 %의 3 개 표준 편차 내에있다.

편집 : 나는 Math.round을 포함하는 것을 잊었다 ()와 평균과 표준 편차가 약 전환했다.

추천

출처http://43.154.161.224:23101/article/api/json?id=315372&siteId=1