2017-02-10 13 views
0

Моя проблема в основном связана с математической логикой, более чем с кодовой проблемой.Генерировать деление, результат которого не имеет точечного и дивизора, а дивиденды генерируются случайным образом из диапазона чисел

У меня есть приложение для Android, в котором я создаю подразделение.

Мне нужно сгенерировать деление, дивизор и дивиденды которых генерируются случайным образом из определенного диапазона чисел (скажем, 10-1000) и результатом которого является число без точки.

Например:

A (10-1000): B (10-1000) = C (номер без точки)

Кто-нибудь знает, как достичь своей цели. Математика не мой друг.

Спасибо

+0

Когда вы говорите, номер без точки, вы просто означает целое число? Например, 3 вместо 3.14? –

+0

Да, результат должен быть положительным int – MDP

ответ

0

"математика" логика здесь (пример значения):

если ((2% 2,5)> 0) ака проверить, если 2 равномерно делится на 2,5

Пока приведенный выше пример является ложным, случайным образом генерируемые значения не возвращают целое число или «число без точки».

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. Начните с выбора двух случайных целых чисел («нет точки») B и C. Найдите A, умножив их вместе. Спросите «Что такое 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

. Затем повторно выбирайте пары BC до тех пор, пока A не окажется в правильном диапазоне. B и C могут находиться в диапазоне [2..500], чтобы уменьшить количество промахов. – rossum