【Shopify】ランダムな数字(乱数)を作る

Liquidでランダムな数字を作りたい時があります。

しかし乱数を生成するタグがありませんでした。

探したところ乱数の生成についての英文記事がありましたので、和訳しつつご紹介いたします。

引用元:https://dev.to/pgrimaud/how-to-generate-a-random-number-in-shopify-2nd5

Liquidでランダムな数字を作る

最初に、乱数の範囲を用意します。変数minに最小の数を、変数maxに最大の数を入れています。

minに0を、maxに9を入れることで、0から9の間のランダムな数を取得できます。

{%- assign min = 0 -%}
{%- assign max = 9 -%}

次に、ナノ秒(秒の少数桁)を取得します。フォーマットに「%N」を指定することでナノ秒を取得できます。

{%- assign date_fract = "now" | date: "%N" -%}

その次に、maxからminを引きます。

{%- assign diff = max | minus: min -%}

最後にdateタグを利用して、乱数を生成します。

「date: %N」でナノ秒を取得し、それからmaxからminを引いた数で割った余りを出し、最後に「plus:min」で最小値minを足しています。

{%- assign random_number = "now" | date: "%N" | modulo: diff | plus: min -%}

変わっていく時間(ナノ秒)を利用して乱数を生成するというやり方でした。

全て合わせてこのように書くと乱数が取得できます。

{%- assign min = 0 -%}
{%- assign max = 9 -%}
{%- assign diff = max | minus: min -%}
{%- assign random_number = "now" | date: "%N" | modulo: diff | plus: min -%}

注意したい点

Shopifyはキャッシュされますので、意図した通りに動かない可能性もあります。また、乱数が数分間または数時間更新されない可能性もあります。

それを考慮した上で利用するのが良いでしょう。

引用元サイト

先にも書きましたが、素晴らしい記事を和訳&ちょっと簡潔にした記事です。

引用元サイトにはもう少し詳しく記載がありますので、ぜひみてみてください。

https://dev.to/pgrimaud/how-to-generate-a-random-number-in-shopify-2nd5

この記事はあなたの役に立ちましたか?

▼毎日をちょっと楽しく過ごす