LoginSignup

エンジニアとしての市場価値を測りませんか?PR

企業からあなたに合ったオリジナルのスカウトを受け取って、市場価値を測りましょう

0
0

はじめに

時々使うかもしれないランダムな値の扱い方。
検索でも様々なものが出てきますが、自分なりに勉強したことをまとめます。

使用するプロパティ・メソッド

Math.random() 静的メソッド
今回のメイン。0以上1未満の乱数を返します。

Math.floor(num) 静的メソッド
num以下で最大の整数を返します。

length プロパティ
配列の要素の数を返します。

flat(depth) メソッド
配列を引数depthの深さだけフラット化したものを返します。
depthを省略した場合は1とみなします。

sort(fn) メソッド
ソート順を定義する関数fnに従って元の配列をソートし、その結果を返します。
fnの戻り値が正か負かによって、並びが変わります。

ランダムな整数を取得する

以下の変数min, maxには整数が代入されることを想定しています。

0以上max以下のランダムな整数を取得する

const max = 100;
console.log(Math.floor(Math.random() * (max + 1)));
  // 例: 51

min以上max以下のランダムな整数を取得する

const min = -100;
const max = 100;
console.log(Math.floor(Math.random() * (max - min + 1)) + min);
  // 例: -88

配列からランダムな要素を取り出す

一次元配列からランダムな要素を取り出す

const array = ['Cannondale', 'Cervélo', 'Colnago', 'Canyon', 'Corratec'];
console.log(array[Math.floor(Math.random() * array.length)]);
  // 例: Cervélo

二次元配列からランダムな要素を取り出す

const array = [
    ['Cannondale', 'EF Education-EasyPost'],
    ['Cervélo', 'Team Visma | Lease a Bike'],
    ['COLNAGO', 'UAE Team Emirates'],
    ['Canyon', 'Alpecin-Deceuninck'],
    ['Corratec', 'Team corratec - Vini Fantini'],
];

console.log(array[Math.floor(Math.random() * array.length)][0]);
  // 例: Canyon

二次元配列から完全ランダムに要素を取り出す

const array = [
    ['Cannondale', 'EF Education-EasyPost'],
    ['Cervélo', 'Team Visma | Lease a Bike'],
    ['COLNAGO', 'UAE Team Emirates'],
    ['Canyon', 'Alpecin-Deceuninck'],
    ['Corratec', 'Team corratec - Vini Fantini'],
];
const flatArray = array.flat();

console.log(flatArray[Math.floor(Math.random() * flatArray.length)]);
  // 例: EF Education-EasyPost

オブジェクトの配列からランダムな要素を取り出す

const array = [
    { bike: 'Cannondale', team: 'EF Education-EasyPost' },
    { bike: 'Cervélo', team: 'Team Visma | Lease a Bike' },
    { bike: 'COLNAGO', team: 'UAE Team Emirates' },
    { bike: 'Canyon', team: 'Alpecin-Deceuninck' },
    { bike: 'Corratec', team: 'Team corratec - Vini Fantini' },
];

console.log(array[Math.floor(Math.random() * array.length)].bike);
  // 例: Corratec

配列をランダムに並べ替える

一次元配列をランダムに並べ替える

const array = ['Cannondale', 'Cervélo', 'Colnago', 'Canyon', 'Corratec'];
console.log(array.sort(() => Math.random() - 0.5));
  // 例: ['Canyon', 'Colnago', 'Cervélo', 'Corratec', 'Cannondale']

二次元配列やオブジェクトの配列でも同様の手順で並べ替えることができます。

おわりに

Math.random()と他のメソッドの組み合わせで、多様な処理を実現できそうだと感じました。
例えば配列から複数要素を取り出したり文字列をランダムに並べ替えたりすることも簡単にできそうです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Comments

dgcdsbsd2
@dgcdsbsd2

一次元配列からランダムな要素を取り出す

const array = ['Cannondale', 'Cervélo', 'Colnago', 'Canyon', 'Corratec'];
console.log(array[Math.floor(Math.random() * array.length)]);
 // 例: Cervélo

引数が整数に変換されるat()メソッドを使用することで、Math.floor()による整数化を省略することもできます。

const array = ['Cannondale', 'Cervélo', 'Colnago', 'Canyon', 'Corratec'];
console.log(array.at(Math.random() * array.length));

console.log(array.sort(() => Math.random() - 0.5));

上記の方法は結構大きな偏りが発生するので、偏りの少なさも重要なケースでは注意が必要です。
https://cpoint-lab.co.jp/article/202211/23527/

0

Let's comment your feelings that are more than good

Being held Article posting campaign

生成AIに関する記事を書こう!

~
View details

お題は不問!Qiita Engineer Festa 2024で記事投稿!

~
View details
0
0

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address