Назначьте новое значение для удвоения в цикле for после 6 итераций - PullRequest
0 голосов
/ 20 сентября 2019

Я не могу понять, почему x=x-z дает мне значения, которые он делает.Предполагается, что x уменьшает свое значение на z в каждом 6-м цикле для 1000 циклов, делая менее вероятным, что mrnd (математическая случайность) больше poa (вероятность принятия).

int i = 0; 
double y = 0.9;
double x = 1.0;
double z = 0.1;

for (int o = 0; o < 1000; o++) {
    for (i = 0; i < 6; i++) {


        Double random = Math.random();
        Double mrnd = Math.floor(random*100)/100;

        double poa = (x*y);
        System.out.println("randomkalk " + mrnd);
        System.out.println("probability" + poa);

        if (poa < mrnd ) {
            System.out.println("accept change");
        };
        if (poa > mrnd )  {
            System.out.println("deny change");
        }

    }   
    System.out.println(x-z); // This gives the right output if x=x-z is not present
    System.out.println(" nr 6 \n \n ");
    x = x-z; // Gives wrong output 
}

1 Ответ

0 голосов
/ 20 сентября 2019

Как указывает М. Прохоров, вы ничего не делаете на каждой шестой итерации.Вы делаете что-то 6 раз за каждую итерацию.Создание другого цикла в вашем цикле только добавит больше итераций что-то ;вместо этого попробуйте проверить счетчик во внешнем цикле.

int i = 0; 
double y = 0.9;
double x = 1.0;
double z = 0.1;

for (int o = 0; o < 1000; o++) {
    Double random = Math.random();
    Double mrnd = Math.floor(random*100)/100;

    double poa = (x*y);
    System.out.println("randomkalk " + mrnd);
    System.out.println("probability" + poa);

    if (poa < mrnd ) {
        System.out.println("accept change");
    };
    if (poa > mrnd )  {
        System.out.println("deny change");
    }

    if (o % 6 == 5) {
        x = x-z;
    }
}

Здесь я использую оператор модуля, чтобы проверить, находимся ли мы на 6-й итерации

  • 0% 6 ==0
  • 1% 6 == 1
  • 2% 6 == 2
  • 3% 6 == 3
  • 4% 6 == 4
  • 5% 6 == 5 уменьшение
  • 6% 6 == 0
  • 7% 6 == 1
  • 8%6 == 2
  • 9% 6 == 3
  • 10% 6 == 4
  • 11% 6 == 5 уменьшение
  • 12% 6 == 0
...