TEST12138

TEST12138

长路漫漫,唯心作伴。

前端における乱数の使い方

前端開発では、Math.random()という関数があります。この関数は 0 から 1 の間のランダムな数値を返します。

image

では、実際の開発でランダムな色を取得したい場合はどうすればよいでしょうか。まず、Math.random()を使用して数値を取得し、数値にはtoString()関数があります。この関数は数値を文字列に変換することができます。重要なのは、toString()関数に変換する基数を指定できることです。例えば、Math.random().toString(2)とすると、2 進数が得られます。

image

色の基数は 16 進数ですので、16 を指定すれば良いです。

image

簡単に切り取ります。

image

簡単な関数を作ります。

image

image

しかし、このように書くと問題があります。ランダムな数値は 0 から 1 の間ですので、0.5 などが出てくると、変換後の桁数が足りません。明らかに、色の要件に合いません。

image

足りない場合は、自分で文字列の末尾に追加する必要があります。padEnd()を使用することができます。

image

文字列が 6 桁に足りない場合、後ろに十分な数の 0 を追加します。もちろん、0 を追加する必要はありません。色に合致するなら、自分で追加してください。

function randomColor () {
	return '#' + Math.random().toString(16).slice(2,8).padEnd(6,'0');
}
console.log(randomColor())

ランダムな色を生成するだけでなく、ランダムな文字列も生成することができます。Math.random().toString(36)とします。
36 進数とは何でしょうか。10 個の数字と 26 個のアルファベット、合計 36 個です。

image

簡単な関数を作ります。

image

image

文字列の長さを指定することもできます。少し変更してみましょう。

image

image

しかし、このように生成される文字列は限られています。最初に生成されるランダムな数値の桁数が限られているため、指定した長さが生成された長さを大幅に超える場合、余分なカスタム文字列が後ろに追加されます。これは私たちが望むランダムな文字列とは一致しません。

image

数えてみると、一般的に生成される長さは 11 桁です。したがって、再帰的に関数を修正します。

image

image

これにより、超長い文字列もサポートされます。

function randomString(len) {
	if (len <= 11) {
		return Math.random().toString(36).slice(2, 2 + len).padEnd(len, '0');
	} else {
		return randomString(11) + randomString(len - 11)
	}
}
console.log(randomString(100))
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。