ChatGPTの汎用性が生きます.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS18.1
スポンサーリンク
普通の「ランダム」
ショートカットには当然「乱数」のアクションがあります.
1個生成するだけなら問題ないですが一定の数を生成すると乱数ゆえある程度偏りが生じます.
ダメな例1
実際に簡単なものを作って確かめてみます.
まずは「繰り返し」アクションを使って「乱数」を5回出力してかき集めます.
表示する前に「ファイルにフィルタを適用」を行っているのは集めた乱数を昇順に並び替えるためです.
こうして作られた乱数列はどうしても偏ってしまう場合があります.
それどころか場合によっては重複してしまうので目的次第では完全に使い物にならないレシピと言えます.
ダメな例2
2つ目は最小値から最大値の列を作り、それを「ファイルにフィルタを適用」でランダムに並び替えつつ必要な個数だけ取り出すものです.
過去にも紹介しましたがこの方法では重複を避けることができます.
しかし取り出した結果に偏りが生じる可能性は残ったままです.
本題
指定した範囲内で、偏りなくランダムっぽく数を取得するため、ChatGPTの力を借ります.
個数や最小・最大を後でわかりやすく変更できるよう、これらは辞書アクションを使っています.
ChatGPTには主に以下を伝えます:
- 生成する個数
- ランダムかつまんべんなく取るよう要求
- 生成範囲
- 生成した結果を取り出しやすくする工夫
4はこちらで紹介した通りです.
文頭に区別できる文字をあえて入れるよう指示し、正規表現を使ってその文字の後ろだけ取り出すという方法です.
一旦"Ask ChatGPT"の結果を見てみるとちゃんと要求通りに回答してくれていますね.
更に正規表現を経て数だけ出力できました.
結果もいい感じにバラバラです.
今回はたまたまでしょうが、この質問文だとたまに自然数でなく小数になる場合があります.
はっきりさせたい場合はきちんと「自然数」や「小数」、「実数」などと指定する必要があります.
ここで、あらかじめ決めた特定の文字は「テキストを置き換え」で消せば十分だと思うはずです.
その通りなのですが、たまにChatGPTは余計な文章を加えた上で回答してきます.
そのためその文字を取り除くだけでは不十分な場合があり、それを防ぐため正規表現の使用が求められます.
応用
同じことを他の要素、例えば時刻でやってみます.
構成は先程と同じで、時刻という要素に合わせて言葉を変えるだけです.
これで指定範囲内でいい感じにバラバラの時刻が取れました.
〆
標本調査で程よくサンプルを取るのに使えそうですね.
サンプル数次第では確率分布なんてあってないようなものですから、こんな内容でも十分価値があります.
意図的に偏りの少ない乱数を作るのは難しいですからね.
ChatGPTアクションは短時間に使いすぎるとAdvanced data analysisの制限がかかるようなので気をつけましょう.