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을 포함하는 것을 잊었다 ()와 평균과 표준 편차가 약 전환했다.