• juliebean@lemm.ee
    link
    fedilink
    English
    arrow-up
    63
    ·
    18 days ago

    what would be the alternative? to always execute if the condition is true, but sometimes execute it even when false, for funsies?

    • Admiral Patrick@dubvee.org
      link
      fedilink
      English
      arrow-up
      41
      ·
      edit-2
      17 days ago

      Hey, I like a little chaos in my codebase 😆

      const funsies = () => (Math.round(Math.random() * 1000) % 2 == 0)
      if ( condition || funsies() ) {
          // do the thing
      }
      
      • sorrybookbroke@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        6
        ·
        edit-2
        17 days ago

        Wait, why the the *1000 or mod 2? Won’t that give a 50\50 chance or the same as Math.round(Math.random).

        No shade, and I may be wrong myself I am very tired

        • mexicancartel@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          2
          ·
          16 days ago

          Probably to make the fractional random value between 0 and 1 to become an integer so that you can divisibility check for even with mod 2

        • Admiral Patrick@dubvee.org
          link
          fedilink
          English
          arrow-up
          19
          ·
          edit-2
          18 days ago

          Nope. I’m staunchly against “AI”. If the code sucks, it’s because I wrote bad code.

          Edit: Oh, or did you mean is that how “AI” works?

        • Admiral Patrick@dubvee.org
          link
          fedilink
          English
          arrow-up
          3
          ·
          edit-2
          17 days ago

          In Javascript, Math.random() produces a float value between 0 and 1, so I multiply by 1000 and round it to get a larger integer. The value %2 == 0 is a non-library way of performing isEven() on the random integer (value % 2 is 0 if even, 1 if odd, and the ==0 makes it return a boolean). When used in the if statement, it’s essentially a coin flip.

          • juliebean@lemm.ee
            link
            fedilink
            English
            arrow-up
            3
            ·
            13 days ago

            does javascript not allow you to interpret integers as booleans in a conditions directly? seems it’d be simpler to just do math.round(math.random()), which should still get you true (1) or false (0) in equal likelihood. or am i missing something?

            • Admiral Patrick@dubvee.org
              link
              fedilink
              English
              arrow-up
              1
              ·
              edit-2
              12 days ago

              It’ll give you 1 ~= true or 0 ~= undefined, but I typically use Typescript which prefers actual booleans to boolean-ish

              • juliebean@lemm.ee
                link
                fedilink
                English
                arrow-up
                1
                ·
                12 days ago

                huh. interesting. i wonder what number it’s actually storing for false then?

    • bstix@feddit.dk
      link
      fedilink
      English
      arrow-up
      19
      ·
      18 days ago

      The “only” part implies exclusivity, which may be false, because other things might run the code anyway.

      IF “I can see the sun” THEN “It’s day.”

      Nothing wrong about that. However if we make it exclusive:

      IF AND ONLY IF “I can see the sun” THEN “It’s day.”

      That’s obviously wrong. I can actually not keep the day away by sitting with closed eyes in my mothers basement with the curtains shut.

      “Only if” might make sense in a legal contract, but there’s no way a piece of code can stop other pieces of code from calling the same functions.

      • adj16@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        16 days ago

        But that’s not how if statements in code work. So what you’ve said isn’t wrong, but the premise of this meme is completely off

        • bstix@feddit.dk
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          16 days ago

          Yes sure. Code is logical stepwise. By including the “only if” it implies that other stuff is taken into account, which it isn’t at that moment in code.

          I mean, I don’t need to extend the implications of an IF statement. It already does exactly what it says.

          Anyway fuzzy logic does exist for people who want “sometimes if”. It’s useful in certain cases. I’ve only ever considered it in music production, where things very often get to the point of complexity where it makes a (sometimes) useful difference.

    • General_Effort@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      ·
      edit-2
      18 days ago

      In normal parlance, “if and only if” rules out that something could also happen as a result of other circumstances. EG, if you fall out of a plane, you will lose your glasses. But there are other conditions that would lead to the same result.

      In code, the alternative would be to have a different if statement that executes identical code. Or *cough* you could use a jump instruction to execute literally the same code.

    • unmagical@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      18 days ago

      Brb, making a truly “if” statement function in my products code base for funsies.