-2

Javascriptで、0〜580の間に20を掛けたランダムな偶数を作成するにはどうすればよいですか?

例:220、360、180、0(最小)、400、200、580(最大)

4

5 に答える 5

7

20の増分が必要なので、実際に必要なのは0〜29の範囲の整数であり、次に20を掛けます。例:

var max = (580/20) + 1;
var result = 20 * (Math.floor(Math.random())*max)

maxMath.random()は(0を含む)と(1を含む)の間で均一に分散された数値であるため、に1を追加します。したがって、Math.floorを使用するため、最大値は1大きくする必要があります。

于 2012-10-13T23:23:50.273 に答える
3

このようにして乱数を作成し、それを最も近い倍数に切り捨てます。

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);
于 2012-10-13T23:34:07.733 に答える
1

次のような原則を使用し ます。JavaScriptで2つの数値の間に乱数を生成します

最大結果を580にする場合、20を掛ける最大整数は29(または580/20)になることに注意してください。次に、いくつかのロジックを追加して、整数が偶数であることを確認します。

タダ!

于 2012-10-13T23:27:37.313 に答える
1

これを使用してみてください:

var result = parseInt(Math.random()*30)*20;

29 * 20 = 580

Math.random()return [0..1)

結果は0..580、20ステップ

于 2012-10-13T23:39:17.237 に答える
1

これは、任意の範囲および任意の倍数に使用できる一般的なjavascriptワンライナーです。

基本的に、ここで実行しようとしているのは、0からNの範囲を計算することです。これに、指定された複数を掛けると、範囲[0、max-min ]内に留まります。

この場合、 Nは、単純に(max --min)/ Multiple、またはrange/multipleです。

Nが得られたら、Math.random()を使用して0〜Nの乱数を取得し、それを倍数で乗算できます。次に、 minを追加します。

minmaxはすでに倍数の倍数であると想定しています。

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));

于 2018-04-26T04:38:26.453 に答える