A two-person method to simulate die rolls (2023)

(blog.42yeah.is)

68 points | by Fraterkes 2 days ago

14 comments

  • luckys
    52 minutes ago
    An alternative, because the use of dice is to effectively decide an outcome: for example, Knight (Player1) fights Troll. Have both players agree on a short set of possible outcomes. For this example:

    1-Knight defeats Troll 2-Troll defeats Knight 3-Troll is wounded but escapes 4-Knight is wounded but escapes 5-Another character or party comes into scene

    Then Player2 decides which outcomes are assigned to which numbers (1-5), keeping them a secret and Player1 picks a number not knowing the outcome it stands for.

    It's quicker and within reach of us, mere mortals.

  • xg15
    13 hours ago
    > We can prove that in an ideal situation, the die roll will be fair. Assuming both parties can come up with unbiased random numbers ranging from [0;12)...

    Doesn't that assumption remove the entire problem though? I thought the whole reason for the method was that people can't easily think of an unbiased random number.

    Or put differently, if that's your starting point, what's stopping you from simply doing (A mod 6) + 1?

    • AnotherGoodName
      13 hours ago
      I think the game theory inherit here makes it ok for this purpose. You get an advantage being random. You're likely still not going to generate random numbers but at least there's good motivation to be random and that part just becomes part of the game imho (guess what number the opponent calls to maximize your roll).

      Of course as others note this is a convoluted mod n process.

    • JKCalhoun
      11 hours ago
      Does seem like each person could just secretly write down any number, they are revealed, added and mod 6'd.

      Is all this angular difference stuff a fancy way of saying mod 6?

    • torginus
      13 hours ago
      Yeah, the only valuable idea here is the angle-one, which is like a modulo, making the approach a primitive LCG, which is a way of generating pseudorandom numbers from seeds.

      I'd say the only unbiased and non crappy method here is to feed the 2 participants' numbers into some sorth of hash function.

    • jstanley
      11 hours ago
      Because you can rig the answer if it's just one person. But if two of you use the method from the post, and both commit to your answers before revealing them, then neither of you can rig it.
  • yason
    10 hours ago
    You could draw long/short straws to generate bits but since the challenge limited the tools to mortal bodies any other guessing game would do.

    One could put his hands behind his back with one hand palm open and the other hand in a fist. The other one then guesses which hand is open and him being right or wrong generates either a 1 or 0. Repeat N times for an N-bit binary number. Both players can influence their choice equally and also equally make assumptions about the other player's intentions when making their own choice.

  • IanCal
    13 hours ago
    This starts by assuming humans are bad at coming up with unbiased numbers but then requires them to do so. I don’t get how this could work with biased inputs.
    • jdpage
      13 hours ago
      Bear in mind, the terminal goal doesn't actually require unbiased numbers; the way most TTRPGs work is that you're trying to roll over or under a target number to get a weighted, unpredictable outcome. The idea is that while players (usually) want any given action to succeed, they some of their actions to fail in order to preserve narrative interest, while having their character be better at some things than others.

      As such, while randomness is best, the given method is quite sufficient for having fun, and both players can agree that it's fair: they each have equal influence over the result.

  • fweimer
    12 hours ago
    Usually, commitment schemes are used for this: https://en.wikipedia.org/wiki/Commitment_scheme

    (However, if the stakes are high enough, the party that learns the outcome first can choose to exit the protocol if they are unsatisfied with the result.)

  • andy99
    11 hours ago
    You could just play rock paper scissors three times and use the results as bits for d6? Maybe dropping 111 and alternating who is 1?

    Edit, I realize you’d have to drop 111 and 000 to get 6, not sure what I had in mind in the original, either way it balances. It’s also nice because I don’t think you can intentionally lose rock paper scissors.

    • brokencode
      7 hours ago
      There actually are techniques to win (and presumably lose) rock paper scissors more frequently than random due to psychological factors that make player choices somewhat predictable.
  • zeroonetwothree
    12 hours ago
    It would be more interesting to look at how much this reduces bias based on numbers humans actually tend to generate.

    BTW a "classic" method of generating random numbers is to look at the second hand of a watch mod n.

  • AnotherGoodName
    13 hours ago
    A + B mod n seems much easier than this.
    • tomsmeding
      13 hours ago
      The method proposed is just A - B mod n. The two are entirely equivalent.
      • AnotherGoodName
        13 hours ago
        A few extra steps to essentially manually do the mod part tbh. Would take their 20 line program to a 1 liner.
    • BoiledCabbage
      13 hours ago
      Yup
  • amelius
    12 hours ago
    After a while both people will get tired or bored and start generating the same number over and over again. At which point the method breaks down.
  • evantbyrne
    10 hours ago
    If you have a coin: Heads and tails represent bits. Flip a coin three times and add up the result to emulate a six-sided dice roll. e.g., heads, heads, tails = 3. If you get 7, then try again.
    • nrhrjrjrjtntbt
      10 hours ago
      If you get all heads or all tails then use the last toss as part of your next set of 3.

      E.g. HHHHT -> HHT -> 6

      • daiwt
        8 hours ago
        That will make HHH always 6 and TTT always 1
        • nrhrjrjrjtntbt
          7 hours ago
          HHH becomes H

          Then depending on the next 2 throws

          HH -> keep going

          HT -> 6

          TH -> 5

          TT -> 4

          For TTT similar with K,1,2,3

  • morshu9001
    9 hours ago
    This explanation with angles makes this seem more complicated than it is. Two adversaries think of two numbers 0-11. Both say one aloud, add the other person's number to the one that wasn't said, then subtract 12 if it's higher.

    As a bonus, the other person doesn't know what you "rolled" unless you tell them, which was important for the game I was making.

  • nrhrjrjrjtntbt
    10 hours ago
    > Assuming both parties can come up with unbiased random numbers ranging from

    Oh shame I though you were going to solve that problem.

  • AlotOfReading
    12 hours ago
    Another procedure based on a similar problem I worked on with a friend: you both pick positive integers a and b, then add them together to create c. Either sqrt(c) or sqrt(c+1) is irrational and the fractional digits provide your random numbers. If you need a new sequence, you take some digits from the current expansion and sqrt() them again.

    Might not be unbiased, but good luck proving it.

    • pama
      11 hours ago
      Even without a formal proof you could test it empirically if you generate a large number of samples and run regular tests for pseudorandom number generators. [Edit: a quick test on a million samples and relatively simple RNG tests suggests that this is indeed good enough; maybe worth working out a proof if this hasn't been done already. Edit2: I guess the main problem you'd hit in practice with short sequences of digits would be to avoid accidental recurrences with too short a period, but it should be possible to make it statistically unlikely in practice with enough compute/digits.]
      • AlotOfReading
        8 hours ago
        Passes dieharder and PractRand, so it's pretty dang good.
        • pama
          7 hours ago
          Yeah I like the simplicity and power of it. You might want to tackle the math and write it up.
    • crdrost
      11 hours ago
      I'm not entirely sure what algebraic property you would prove with this, but you probably could prove something about it. The issue is that they have repeating continued fraction representations, and large numbers in the continued fraction correspond to very good rational approximations, and so you'd find that a bunch of these chosen at random have pretty good rational approximations, which assuming the denominator is co-prime to 10, probably means that it explores the space of digits too uniformly? Something like that.
      • AlotOfReading
        11 hours ago
        The approach I was thinking of is that you'd prove normality or the lack thereof, a notoriously open problem for virtually all irrational roots. Continued fractions might be fruitful, but I suspect you'd eventually run one of the many other open problems in that space instead.
    • echoangle
      11 hours ago
      Can you calculate the digits in your head without help?
  • jojobas
    11 hours ago
    Sounds like a bit more complicated odds-and-evens. Rather than mess with pi and circles, you could just cast 0-9 fingers and get mod 6 + 1.