パーセンテージ指定による確率判定
コード例
export function percent(value: number): boolean {
return Math.random() * 100 < value;
}
import { percent } from "./random";
// 47%の確率でtrueが返る。
console.log(percent(47));
ソースコード
解説/アルゴリズム
Math.random
の乱数の範囲は、 0以上 1未満
になる。
指定したいパーセンテージの範囲は 0 ~ 100(%) なので、乱数値と比較する前に、引数のパーセンテージ値を 100 で割る。
パーセンテージ値の範囲が 0 ~ 1 になるので、 100 を掛けた乱数値と比較して結果を出す。
関係演算子が <
なのは、 <=
だと 0(%) を指定したときに true が返る可能性があるから。
100(%) を指定した場合でも、乱数は 1 を返すことはないので <
の比較で結果は必ず true になる。