min
2 つのパラメーターを受け取りmax
、2 つの整数の間で乱数を生成するJavaScript 関数を作成しようとしています。その部分は簡単です。
物事が荒くなるのは、次のような条件を作成する必要があることです
function generateNum (min, max) {
var randNumber = Math.ceil(Math.random()*(max - min)+min);
if (randNumber === max) {
// store the result (probably in an array) and generate a new
// number with the same behavior as randNumber (e.g. it is also
// stores it's total in the array and recursively "re-generates
// a new number until max is not hit)
}
}
これを再帰的に処理して、現在までの最大ヒット数の合計を保存し、結合してから返すという考え方です。
例: スクリプトは 5/10 の最小/最大パラメーターを受け取りますgenerateNum(5,10){}
。によって生成された値randNumber
が 5、6、7、8、または 9 の場合、再帰はなく、関数はその値を返します。によって生成された値が である場合、randNumber
その10
値10
は配列に格納され、関数は再帰的に「再試行」します (つまり、10 回生成されると、その値は追加のオブジェクトとして配列に格納され、関数の再試行)。プロセスが停止したとき (無限になる可能性がありますが、再帰ごとに繰り返される放物線状に減少する確率があります)。最終的な数値 (5、6、7、8、9) が生成されたmax
値の合計に追加され、結果が返されます。
非常に珍しい数学のシナリオです。それが意味をなさない場合、どうすれば明確にできるか教えてください。