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までの範囲を有することです。だから私は2分ごとに80から130に問題を乱数を生成しようとしたコード内でランダム関数は、範囲の下と上にかなり頻繁に行くことです。だから、私の質問は:私は、関数が90〜120以上の数字を生成し、90アンダー、120以上少ない数字にすることはできますか?1つの番号ごとに1〜2時間のように?
グレッグ司会:
あなたはRandom.nextGaussian()メソッドを使用する必要があります。私は、この例からの結果の0.3%未満が90未満であるか、又はそれはあなたの80〜130の範囲外にある場合120上に、私はまた、数を再生するためにピースを加え、平均値と標準偏差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パーセントは、平均値の1つの標準偏差内に入るということです、結果の95.45パーセントは、2枚のSD内にあり、結果の99.73パーセントは、3枚のSDの範囲内です。
編集:私は恐らくMath.roundを含めるのを忘れて()と平均値と標準偏差を入れ替えていました。