アクション「変数の設定」内で使えるMacrodroid関数のひとつに「RANDOM()」というものがあります。
これの使い方が長らく私は分からなかったのですが…
ようやく分かったので書き残します!
こうではない
整数の変数を指定して、入力欄に
RANDOM(最大値)
RANDOM(値,値,値)
RANDOM(最小値-最大値)
RANDOM(変数名)
RANDOM()
RANDOM(最大値)
RANDOM(値,値,値)
RANDOM(最小値-最大値)
RANDOM(変数名)
RANDOM()
こういうふうに書いても無効。
書いても値は0になります。
で、これは、こういうふうに使うものではないんだそうです。
ではどう使うのか?
「RANDOM()」は実は
小数点以下にランダム値が発生するのだそうです。小数点以下16桁にランダム値が。
なので、「小数点タイプの変数」があると、その効果が分かります
変数Aという「小数点タイプの変数」を作ってこんなふうに書いてみます。
アクション「変数を設定」
→変数A (小数点タイプの変数)
→任意の式
→「RANDOM()」
→変数A (小数点タイプの変数)
→任意の式
→「RANDOM()」
こう書いたアクション実行後に、変数Aを「ポップアップメッセージ」「ダイアログ」などで表示すると、こうなっています。
えっ、いや、ランダムな数値は欲しいけど… 小数点以下じゃなくて正数で欲しいし、16桁も要らない…
Q.正数で欲しい!A.欲しい桁数ぶん「*10」しましょう!
一桁欲しいなら *10
二桁欲しいなら *100
Q. それをしても小数点以下にいっぱい数値が残るのが邪魔
A. 切り捨てましょう。
FLOOR(変数A)
で変数Aの小数点以下の数値を捨てることができます。
Q. 上記二つをセットにした書き方を教えて
A. こうです。
これで一桁のランダム数値が、変数Aに入ります。
FLOOR({v=変数A}*10)
「小数点タイプの変数」の利用を省く方法
整数タイプの変数に「RANDOM()」を書いても「0」になってしまうので無意味に見えますが…整数タイプの変数でも、
FLOOR(RANDOM()*10)
こんなふうに桁のかけ算まで書くのであれば、内部で「RANDOM() の生成×桁のかけ算」をやってくれるので、これで一桁ランダム数値の取得に成功します。
「FLOOR(RANDOM()*10)」の結果が「0」はあり得る?
あり得ます。「(RANDOM()」
の小数点第1位~第16位までの16個の数字はすべて「0~9」からのランダムです。
小数点第1位の数字が0であることはあり得ます。
コメント