Javascriptで、0〜580の間に20を掛けたランダムな偶数を作成するにはどうすればよいですか?
例:220、360、180、0(最小)、400、200、580(最大)
Javascriptで、0〜580の間に20を掛けたランダムな偶数を作成するにはどうすればよいですか?
例:220、360、180、0(最小)、400、200、580(最大)
20の増分が必要なので、実際に必要なのは0〜29の範囲の整数であり、次に20を掛けます。例:
var max = (580/20) + 1;
var result = 20 * (Math.floor(Math.random())*max)
max
Math.random()は(0を含む)と(1を含む)の間で均一に分散された数値であるため、に1を追加します。したがって、Math.floorを使用するため、最大値は1大きくする必要があります。
このようにして乱数を作成し、それを最も近い倍数に切り捨てます。
0 <= randomMultiple<=maxが必要な場合
var random = Math.random() * (580 + 20);
randomMultiple = random - (random % 20);
0 <=randomMultiple<maxが必要な場合
var random = Math.random() * 580;
randomMultiple = random - (random % 20);
次のような原則を使用し ます。JavaScriptで2つの数値の間に乱数を生成します
最大結果を580にする場合、20を掛ける最大整数は29(または580/20)になることに注意してください。次に、いくつかのロジックを追加して、整数が偶数であることを確認します。
タダ!
これを使用してみてください:
var result = parseInt(Math.random()*30)*20;
29 * 20 = 580
Math.random()return [0..1)
結果は0..580、20ステップ
これは、任意の範囲および任意の倍数に使用できる一般的なjavascriptワンライナーです。
基本的に、ここで実行しようとしているのは、0からNの範囲を計算することです。これに、指定された複数を掛けると、範囲[0、max-min ]内に留まります。
この場合、 Nは、単純に(max --min)/ Multiple、またはrange/multipleです。
Nが得られたら、Math.random()を使用して0〜Nの乱数を取得し、それを倍数で乗算できます。次に、 minを追加します。
minとmaxはすでに倍数の倍数であると想定しています。
Math.random()の入力に+1が追加されるのは、Math.random()が0(包括的)から1(排他的)までの数値を返すためです。したがって、Math.random()は1を返すことはできません。それを考慮しなかった場合、結果に最大数を含めることはできません。
/*
* Returns a random number within range [min,max]
*
* min and max must be multiples of multiple
* (note that 0 is a multiple of all integers)
*/
function randomMultiple (min, max, multiple) {
return Math.floor(Math.random() * (((max - min)/multiple)+1)) * multiple + min;
}
console.log(randomMultiple(0, 580, 20));