1. PHP / Говнокод #25632

    +2

    1. 1
    2. 2
    3. 3
    for ($j = 0; $j < rand(2, 5); $j++) {
        // тут какой-то другой код
    }

    На каждой новой итерации rand() пересчитывается, т.е. цикл сам не знает от нуля до скольки он будет

    Запостил: antosha, 22 Мая 2019

    Комментарии (10) RSS

    • Разбирающимся в теорвере читателям предлагается посчитать вероятность, с которой цикл будет бесконечным
      Ответить
    • А так?
      foreach(range(0, rand(2, 5)) as $j) {
          // тут какой-то другой код
      }
      Ответить
    • От нуля до 2, 3, 4 или 5 цикл будет проходить с вероятностью 25%, до остальных чисел — 0%.

      Перевёл для тебя на PHP...
      <?php
      
      const START = 2;
      const END   = 5;
      const COUNT = 1e8;
      
      $result = array_reduce(range(START, END), function($a, $v) {
      	$a[$v] = 0;
      	return $a;
      }, []);
      
      for($i = 0; $i < COUNT; $i++) {
      	$result[rand(START, END)]++;
      }
      
      print_r(array_map(function($v) {
      	return vsprintf("%f%%", [100 * $v / COUNT]);
      }, $result));
      И выполнил в терминале...
      ➜ php -f test.php
      Array
      (
          [2] => 25.002831%
          [3] => 24.996276%
          [4] => 24.999448%
          [5] => 25.001445%
      )
      Ответить
    • #математик
      Ответить

    Добавить комментарий