初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-05-12 14:09:34

pancii
Guest

指定範囲の整数の中でランダムな数字を出すには?

ただいまFM勉強中です。
random関数では、0~1までの数字を0と1含まずに返すようですが
指定範囲内の整数をランダムに表示させるにはどうすればいいのでしょうか?

たとえばフィールドを2個つくり
F1が 5 F2が 100 と指定した場合に
5~100まで(もしくは6~99まで)を返すようにするにはどうするか?と思いまして。
int(random*(F2-F1))で、それっぽく答えがかえって来ているような気もするのですが・・・

#2 2016-05-12 14:50:35

Hiro
Member

Re: 指定範囲の整数の中でランダムな数字を出すには?

Let([
   #min=F1;
   #max=F2;
   #rdm=Int(Random*#max+1);
   #rdm=
      Case(
         #rdm<#min; Min(#rdm+#min; #max);
         #rdm
      )
];
   #rdm
)

Offline

#3 2016-05-12 16:24:19

calcer
Guest

Re: 指定範囲の整数の中でランダムな数字を出すには?

int(random*(F2-F1+1))+F1
5から100までなら100-5+1=96種類から選ぶことになる。ベースが0なので最小値を加算。

#4 2016-05-12 18:03:35

Hiro
Member

Re: 指定範囲の整数の中でランダムな数字を出すには?

calcer wrote:

int(random*(F2-F1+1))+F1
5から100までなら100-5+1=96種類から選ぶことになる。ベースが0なので最小値を加算。

はじめ同様な式を考えましたが、F1=5でF2=6のときに破綻するので、少し複雑な式に...。^^;;

Offline

#5 2016-05-12 18:46:52

pancii
Guest

Re: 指定範囲の整数の中でランダムな数字を出すには?

ありがとうございます。
エラー処理までは考えていませんでした。だめですね・・・

いま教えていただいた式をためしているのですが
ヘルプを見てもrandomの仕様が詳しく出ていなくてこまっています。
0と1を除いて、どの程度の桁数まで出るのかは決まっているんでしょうか?
小数点以下17桁だったり18桁だったりするようです

#6 2016-05-12 19:51:36

Hiro
Member

Re: 指定範囲の整数の中でランダムな数字を出すには?

Random関数は0と1の間の数を0を含めて返しますが、1は含みません。
また小数点以下18桁ですが、末尾の0は省略されて非表示となるので、18桁を最大にそれ以下の数字が表示されるようです。

Offline

#7 2016-05-12 20:40:51

ぽんかん
Guest

Re: 指定範囲の整数の中でランダムな数字を出すには?

calcer さんので、5と6でも問題ないです。
問題あるとしたら、F1>F2の場合。

#8 2016-05-13 08:46:32

チポ
Member

Re: 指定範囲の整数の中でランダムな数字を出すには?

calcerさんの考え方でいいですよね。

Hiroさんの式は、
大きい方に偏った値を返します。
ランダムとは言えませんよ。

例えば、
F1とF2を
9,10
の様に極端な設定をするとお分かりになるかと。

Offline

#9 2016-05-13 11:46:05

Hiro
Member

Re: 指定範囲の整数の中でランダムな数字を出すには?

御意!

傾向については、F1とF2の値により色々と変化しますし、また、
サンプル数によりRandom関数自体にも傾向があるような。
なので、偏りは想定の上で、いけるかなあ?と。

しかし、問題は、わざわざ偏りを発生させて補正する、誤った考え方ですネ。

Last edited by Hiro (2016-05-13 13:41:59)

Offline

#10 2016-05-13 14:17:34

honda
Guest

Re: 指定範囲の整数の中でランダムな数字を出すには?

> サンプル数によりRandom関数自体にも傾向があるような。

http://filemaker-kou.seesaa.net/article/150205137.html
過去に分布を調べた限り、明確な偏りはありませんでした。
この記事以降も1次元のプロットなど幾つかの方法で確認しましたが、
少なくともVer.10の時点では明確な偏りは無さそうでした。

#11 2016-05-14 02:48:03

Hiro
Member

Re: 指定範囲の整数の中でランダムな数字を出すには?

サンプル数に比例して、多ければ多いほど分散平準化していくのは理解します。(記事は十分な百万件でテスト、が多少の斑模様が未だ残る)
しかしサンプル数が少ない場合、意図では無くとも偶然の結果として、斑が生ずる現象は原理的に致し方ないことかと、

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.012 seconds, 9 queries executed - Memory usage: 520.61 KiB (Peak: 525.52 KiB) ]