【JavaScript】Math.random()関数
Math.random()
ランダムな数値を取得する関数。
使いみちが思いついたので勉強がてらnoteへ記載。
基本構文
Math.random()
// Math.random; Google chromeで実行した場合
// ƒ random() { [native code] }
基本構文を実行すると0以上、1未満の数値をランダムで1つ返す。
実践
// ランダムな数値(0以上、1未満)を呼び出す
console.log(Math.random());
-> 0.9434423040316109
-> 0.8997997952711219
-> 0.29447520005238403
// 引数maxへ入力した値までの数値をランダムで1つ表示
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
// (Math.random() - Math.floor(max)); -> 引数に与えた数値が-に変換されて表示される
// + -> 引数に与えた数値がそのまま表示される
getRandomInt(6.5); //小数点以下は切り捨てられた
-> 4
-> 6
-> 0
ちなみにMath.floor() メソッドは、引数として与えた数以下の最大の整数を返す。
// min以上、max未満の乱数を返す関数
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
// この場合だと1と9は返ってこない
getRandomArbitrary(1, 9);
-> 4.732579412411795
getRandomArbitrary(1, 9);
-> 6.898142745086989
getRandomArbitrary(1, 9);
-> 6.327933391108177
ランダムレンズサイコロ
JavaScript で配列から重複なくランダムに複数の要素を取り出す方法
【HAM MEDIA MEMO(https://h2ham.net/)】様のサイトで発見。
初心者の私には、ほぼ解説できない…ありがとうございます。
function randomLens(array, num) {
let a = array;
let t = [];
let r = [];
let l = a.length;
let n = num < l ? num : l;
while (n-- > 0) {
let i = Math.random() * l | 0;
r[n] = t[i] || a[i];
--l;
t[i] = t[l] || a[l];
}
return r;
}
let test_array =
[
"XF16mmF1.4",
"XF35mmF1.4",
"XF56mmF1.2 APD",
"XF90mmF2",
"XF8-16mF2.8",
"XF50-140mF2.8",
];
randomLens(test_array, 5);
配列にFUJINONレンズの銘玉たちを代入して、持ち出すレンズを選ぶサイコロにしてみる。
Iinvoke結果は以下の通り。
randomLens(test_array, 5);
(5) ["XF8-16mF2.8", "XF50-140mF2.8", "XF16mmF1.4", "XF35mmF1.4", "XF56mmF1.2 APD"]
randomLens(test_array, 5);
(5) ["XF56mmF1.2 APD", "XF35mmF1.4", "XF8-16mF2.8", "XF50-140mF2.8", "XF16mmF1.4"]
randomLens(test_array, 5);
(5) ["XF50-140mF2.8", "XF90mmF2", "XF8-16mF2.8", "XF16mmF1.4", "XF35mmF1.4"]
randomLens(test_array, 5);
(5) ["XF56mmF1.2 APD", "XF35mmF1.4", "XF50-140mF2.8", "XF8-16mF2.8", "XF90mmF2"]
randomLens(test_array, 5);
(5) ["XF8-16mF2.8", "XF16mmF1.4", "XF90mmF2", "XF56mmF1.2 APD", "XF50-140mF2.8"]
…すごい…重複しない…!
新しいコードに出会ったら、とりあえずコンソール上で実行することを意識付けないと。
今日の学習BGM
まだ知らない日々に
僕に 君に
出会う旅に出よう!
毎日がこんな日々となるように。
引き続きがんばります。
まこと
この記事が気に入ったらサポートをしてみませんか?