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

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

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

You are not logged in.

Announcement

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


#1 2014-07-19 23:40:37

クネ〜ル
Member

Random関数の範囲指定

FM10です。よろしくお願いします。

小学1年生の子供に、(1〜10)の足し算引き算の勉強をさせるため
以下のファイルを作成中です。

Leftフィールド = Int (Random*10) + 1
演算子フィールド = Choose (Int (Random * 2 ) ; "+" ; "-" )
Rightフィールド = Int (Random*10) + 1
計算フィールド = If (演算子 = " + " ; Left + Right ; Left - Right )

上記のままですと、引き算の時にRightフィールドがLeftフィールドより
数値が大きいときにマイナスの答が発生します。

さすがに小1でマイナス計算はしないので、
演算子が "-"のとき、RightはLeftより数値を小さくするよう
Random関数の範囲指定できるのでしょうか。

If ( 演算子 = "-" ; Left > Int ( Random * 10 ) + 1;  Int ( Random * 10 ) + 1 )
なんて試してみましたがまったく無駄でした。

Offline

#2 2014-07-20 01:51:21

Shin
Member

Re: Random関数の範囲指定

引き算の時だけ、Max()とMin()関数を使えば良いでしょう。

Offline

#3 2014-07-20 02:25:02

Hiro
Member

Re: Random関数の範囲指定

例えば「1-1=0」など演算結果が負数にならない式をランダムに自動生成する式は、
  Let([
    #left=Int(Random*10+1);
    #operator=Choose(Int(Random*2);"+";"-");
    #right=Case(#operator="-";Int(Random*(#left-1)+1);Int(Random*10+1));
    #fnc=#left&#operator&#right
  ];
    #fnc & "=" & Evaluate(#fnc)
  )

Offline

#4 2014-07-20 09:19:56

wader
Member

Re: Random関数の範囲指定

範囲指定してだと引き算の時に大きい数が出にくくなるので、
2つ発生して大きい方をLeftに使う方がよさそうです。(Shinさんの)

数1フィールド = Int (Random*10) + 1
演算子フィールド = Choose (Int (Random * 2 ) ; "+" ; "-" )
数2フィールド = Int (Random*10) + 1
問題フィールド = Case ( 演算子 = "+" ; 数1 ; Max ( 数1 ; 数2 ) ) & 演算子 & Case ( 演算子 = "+" ; 数2 ; Min ( 数1 ; 数2 ) )
答えフィールド = Evaluate ( 問題 )

Offline

#5 2014-07-20 10:50:06

クネ〜ル
Member

Re: Random関数の範囲指定

Shin様 Hiro様 wader様 ご回答ありがとうございました。
やりたいことができました。
ごれで夏休みにクイズ&ゲーム感覚で足し算引き算の勉強
をやらせれます。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 8 queries executed - Memory usage: 508.12 KiB (Peak: 512.66 KiB) ]