2017-02-10 9 views
0

私の問題は主に数学的な論理問題です。結果がドットではない除算を生成し、除数と被除数が数値の範囲からランダムに生成されます

私は部門を生成するアンドロイドアプリを持っています。

私は、除数と被除数が特定の範囲の数値(無作為に10-1000)からランダムに生成され、どの結果がドットなしの数値であるかを生成する必要があります。例えば

A(10-1000):B(10-1000)= C(ドットなしの数)

誰もが私の目標を達成する方法を知っています。数学は私の友人ではありません。

+0

あなたはドットなしで数を言うとき、あなただけの整数を意味するのですか?たとえば、3.14ではなく3を指定しますか? –

+0

はい、結果は正の整数でなければなりません – MDP

答えて

0

ここでは "数学" の論理(例えば、値を)ありがとう:

2が2.5

で割り切れる場合((2〜2.5%)> 0)別名チェックすると

上記の例が偽である限り、ランダムに生成された値は整数または "ドットなしの数字"を返しません。

Random random = new Random(); 

    int lowerbound = 10; 


    long counter = 0; 

    while(true){ 

     double a = random.nextInt(10000-lowerbound)+lowerbound+1;//a number between 10 and 10000 
     double b = random.nextInt(10000-lowerbound)+lowerbound+1;//a number between 10 and 10000 

     double result = (a/b); 

     if((result % Math.round(result)) == 0){ 

      System.out.println(a + "/" + b + "=" + result); 

      int ires = (int) Math.round(result); 

      System.out.println(ires); 
      break; 
     } 

     counter++; 
    } 
0

除算の結果を整数にしたい場合は、乗算を開始する必要があります。 A/B = Cの場合、A = B * Cです。まず、2つのランダムな整数(「ドットなし」)BとCを選択します。 A/Bとは何ですか?その答えは、整数C.

いくつかの擬似コードのようになります

B <- 10 + rand(991) // B in [10..1000] 
C <- 10 + rand(991) // C in [10..1000] 
A <- B * C 
display("What is " + A + "/" + B + "?") 
read(answer) 
if (answer == C) 
    display ("Correct. Well done.") 
else 
    display("Wrong answer. The correct answer was " + C) 
end if 
+0

Aは10から1000までの数字でなければなりません – MDP

+0

次に、Aが正しい範囲に入るまでBCペアを繰り返し選択します。 BおよびCは、ミスの数を減らすために[2..500]の範囲内にあることができます。 – rossum

関連する問題