18 KiB
Divining values from a percentage seer and a customized RNG.
-
Author: u/jakeb89 *
-
URL: https://www.reddit.com/r/rational/comments/9jl62h/divining_values_from_a_percentage_seer_and_a/
-
Score: 12
-
Created: 2018-09-28T08:21:06
Post:
Context
In the web serial Worm, there is a character whose power is to ask (or be asked) a question about the chance of a future event or state occurring, and then to know the percentage of all possible futures which observably match the requested event/state. Unfortunately, the seer has a soft limit of somewhere around 10 questions per day, with each question resulting in more pain until it becomes debilitating.
For example, one could ask for the percentage chance of a coil flip resulting in heads, and they might receive an answer along the lines of "49.995289%". In this example, the seer is picturing a future in which they observe the coin resulting in heads, then automatically receiving a percentage of all possible futures in which their observations sufficiently match their envisioned future. If you received an answer such as "12.958234%" on a coin-flip question, you would have to then consider the possibility that something is going to either control the results of the flip (such as another power), or that the seer has a high chance of being prevented from observing the result, or that something may prevent the flip in the first place.
In the fanfic "Finding the Path", a fanfiction of Worm, that seer is given a computer which generates a random number, in which all possible random numbers have a preset and different chance. It also has the ability to do a lookup on that chance to determine which random number has it. Using this tool, the seer can ask a question such as "What is the chance that the killer's phone number will appear on this device when I press the button?" When the power responds "14.234215%", the seer can press the button, see *a* number show up (doesn't matter what it actually says), then look up "14.234215%" to find out that only "6278199231" has that percentage chance of being shown. The seer then can conclude that the killer's phone number is 627-819-9231.
Of course, this is contingent on either accepting that the seer can ask questions about the chance of something occurring which matches a variable they don't yet know, or that we accept that the seer will later on find out in an after-action report that the killer's phone number was that, and therefor satisfy their question. (Perhaps it is better worded as "What is the chance that this computer will show the number I will eventually know is the killer's phone number?") (And that the power somehow doesn't take into account the RNG's generating methodology, or that it is somehow actually truly random.) While these are fairly obvious problems, please ignore them for the purposes of this prompt unless you believe you have something additional to state about them.
Questions
Based on the above context, I have the following questions I would like to pose:
- Is the methodology given sound? Are there any faults you can find in it, and how might you go about solving them?
- Based upon your understanding of the power, is there a better way to go about leveraging it?
- How would you go about fooling such a power (or the methodology) if you were acting against them? How would you go about preventing those methods of fooling it?
Comments:
u/CCC_037 [+10] (an hour later)
Of course, this is contingent on either accepting that the seer can ask questions about the chance of something occurring which matches a variable they don't yet know, or that we accept that the seer will later on find out in an after-action report that the killer's phone number was that, and therefor satisfy their question
It's easy to get around that. "When I look at the number that this machine shows, I will dial it. What are the odds that the killer will answer?"
After looking at the current number, dial it. (Odds are you'll get a wrong number, but do so anyway). Then check the odds in the machine and dial the number that matches the odds given.
The killer can easily fool such a power, if he knows that this trick is being used. He merely needs to have two phones. If the number for Phone A has a 0.003% chance of turning up in your RNG, and the number for Phone B has a 0.001% chance of turning up, then the odds of a successful number turning up are 0.004% - but the single number that turns up at 0.004% probability is the wrong number. (Note that, if your machine returns every possible telephone number, then any individual one will have very low odds).
u/Silver_Swift [+3] (3 days later)
The probability that a number is the killers number is not the same as the probability that the killer answers your call.
The killer could have their phone off or on silent, (in which case the probability is near zero regardless of the number shown) or the phone might randomly malfunction in some universes and not in others (in which case the probability is lower than the one matching their phone number).
u/CCC_037 [+1] (5 days later)
Also an excellent point. Greater care will have to be taken in placing the question.
u/ajuc [+1] (4 hours later)
How will you observe that it's the killer answering and not someone else? You must visualize the future in a way that allows for distinguishing it from other futures (and I assume it must be pretty short visualization, otherways you can just visualize phoning, telling the police to go arrest that guy, waiting for 2 weeks for any evidence, and then seeing the charges being pressed).
u/CCC_037 [+1] (4 hours later)
Easy if the precog knows what the killer looks like. More difficult if not.
u/ajuc [+2] (4 hours later)
Wait, you don't need to be present in the scene you visualize? You can just check how likely it is that in a distant galaxy there is a black hole at a given position? That's a great skill even ignoring the timetravel aspect.
u/jakeb89 [+1] (4 hours later)
My personal understanding of the power (might be incorrect) was that they had to personally observe the outcome they are predicting. (Or at least observe someone telling them the outcome occurred, if the question was worded that way.) It was based upon their own self's future observances (whether first or second-hand, although second-hand becomes much messier and open to errors/spoofing.)
u/ajuc [+1] (5 hours later)
I thought that too, but it seems there is instead a maximum range.
u/CCC_037 [+1] (4 hours later)
The seer does not need to be present; however, I don't recall her using her ability (in Worm) for any predictions outside of the city she was in, so there may still be a maximum range.
Even without a maximum range, mapping distant galaxies is going to be a slow business. Remember, that question is going to be plain 'yes' or 'no' - one bit of information - and you get ten questions a day. No matter how clever you are with your questions, ten bits a day is going to map the distant galaxy very very slowly.
u/ajuc [+2] (5 hours later)
The bandwitch is actually infinite, because you get back a real number (probability), not integer. For example, If I wanted to know the size of a blackhole I could choose random positions within given range, and the answer would give me the volume as a percentage of that range.
u/CCC_037 [+2] (8 hours later)
It's not infinite, because there's a small chance of an Unexpected Random Event (such as a lightning bolt striking the computer) preventing the RNG from producing any results at all; your bandwidth is limited to the number of digits that are significantly more probable than such a outcome.
Though yes, you could use the RNG to get more bits per vision in such a manner, but it's unlikely to be enough to produce a meaningful map of another galaxy in less than a few years' constant work.
u/xland44 [+1] (10 hours later)
The power is limited to within earth (stops at atmosphere). Also, regarding the coin flip example, chance of coin flip could also be skewed by improperly flipping the coin (e.g if you throw it tails-up without a spin, it doesn't actually have a chance of being heads because the coin won't actually flip in the air)
u/ajuc [+1] (11 hours later)
improperly flipping the coin would need to be more probable one way than the other to influence the result
u/xland44 [+1] (11 hours later)
yes, hence being an example of results being influenced :))
u/sickening_sprawl [+6] (12 hours later)
In the fanfic "Finding the Path", a fanfiction of Worm, that seer is given a computer which generates a random number, in which all possible random numbers have a preset and different chance. It also has the ability to do a lookup on that chance to determine which random number has it. Using this tool, the seer can ask a question such as "What is the chance that the killer's phone number will appear on this device when I press the button?" When the power responds "14.234215%", the seer can press the button, see a number show up (doesn't matter what it actually says), then look up "14.234215%" to find out that only "6278199231" has that percentage chance of being shown. The seer then can conclude that the killer's phone number is 627-819-9231.
The problem with this is that your answer doesn't actually have that many bits of precision. There is always a non-zero chance that your mouse will fail, your electricity will cut out, a cosmic ray will flip a bit, the earth will explode, etc, and so if you're depending on the nth bit of the result to signal information you're going to be wrong.
With your example, there are 9,999,999,999 valid phone numbers just in the US. You'd have to split a percentile into that many unique buckets, but your answer always has some epsilon of uncertainty which is more and more significant with the number of buckets you have.
The better way to do it would have n buckets and an n-arity partition search. A phone number is only ~34 bits of entropy, and you can use your scheme to narrow into a lot more than 2 buckets each step. (1,2) has a 1% chance, (2,3) has a 2% chance, etc., then ask for the probability of the phone number being greater than the first element of the random number pair times a billion and less than the second number times a billion. Round the probability to the nearest chance, and you know it's within the range. Repeat with (1.1,1.2) etc. until you're narrowed down.
You'd have to experiment with the error rate, but you could probably get a very large n, and at each iteration you're sure you didn't make a mistake - if you accidentally round to the wrong bucket, when you ask the question it'd say it only has a 0.0000001% chance of being correct because none of the possible outputs contain the phone number unless you get bitflips.
u/turtleswamp [+1] (14 hours later)
Also strictly speaking the power as a whole should probably return "undefined" to all questions unless there is a finite number of possible futures since you can't have a finite percentage of an infinite state space.
If there's a finite number of possible futures there's probably a better exploit relating to figuring out how many and why exactly that many.
u/MereInterest [+3] (16 hours later)
Depending on how your probabilities are defined, you most certainly can have a finite percentage of an infinite state space. For example, I can have a distribution that returns a uniform random value between 0 and 1. There are uncountably infinite possible values for this random value to take. However, if I calculate the probably that the random value will be between 0.25 and 0.75, I get a 50% probability. I have a finite percentage of an infinite state space.
The trick is that you must specify ranges, rather than specifying equality. If I ask what the probability is of getting exactly 0.25, then the probably will be 0%.
u/MilesSand [+1] (2 days later)
Strictly speaking, inifnity doesn't exist. It's a placeholder for "I don't care to count that high" and a few similar statements that make the math work out the way some smart mathematics experts expect it to work out. Once you switch back to observable phenomena rather than pure theory, it goes back to being a finite number you just don't know. (In this case, the finite number is <(count of all possible variables that could affect the question's outcome)!>)
u/ulyssessword [+4] (8 hours later)
There is a ~0.01% chance of a power outage or distraction, so the proper random number corresponding to the phone is 14.242574%, not 14.234215%.
u/Gurkenglas [+1] (17 hours later)
An additional question can ask for the probability that any number appears on the screen, so we can divide the probability of the specific number by that of any number.
This does not deal with confounders that depend on which number is shown, or which might influence which number is shown, such as a roaming hacker randomly generating an IP to investigate, finding this machine, grasping the implications of this program, and making it show other numbers, in order to shift the distribution.
u/None [+1] (21 hours later)
Or the hardware malfunctioning.
u/Gurkenglas [+1] (a day later)
I find it quite unlikely that a program designed for this power would be unable to generate random numbers in ways that aren't vulnerable to the failure of single transistors. I suppose it's barely possible that the value of bits in memory and pixels sent to the screen could influence the probability of an immediate large-scale failure.
u/None [+1] (a day later)
The listed example requires accuracy to somewhere around 2 parts in 10^(20). Things that are "barely possible" will seriously affect the result.
u/Gurkenglas [+1] (a day later)
Right, the sort of bare possibility I meant is where I'm not completely sure that the probability of immediate large-scale failure depending on in-memory values is way less than that. Such a failure is either in the cards or it isn't, and I find it barely possible that it is.
u/None [+1] (a day later)
Note: I work in embedded design.
The probability of state-dependent failure is not that low. And a lot of e.g. manufacturing issues are correlated, which seriously impacts the ability of many approaches of catching such issues.
u/MereInterest [+1] (17 hours later)
This could be accounted for by using two questions, then normalizing.
What is the chance that the plan I am envisioning will be interrupted?
Actual question.
Then
P2/(1-P1)is the normalized probability corresponding to the computer's probability.
u/None [+1] (21 hours later)
Alas, not robust enough. In particular, if there's a chance of a glitch dependent on the value.
u/None [+1] (a day later)
Let us assume that the RNG is indeed random.
Major issue: there is no such thing as a perfect unbiased RNG. And even a tiny amount of error in the RNG, or in the display, or in the stack, etc, makes your results wrong.
Let's take your example:
Phone displays all 10-digit numbers - 0000000000 through 9999999999. Or 10^10 total. To assign each unique probabilities adding up to 100% as far away from each other as possible, you assign the first 1/N, the second 2/N, ... 10^(10)/N. N here is 1+2+...+10^(10), or ~5*10^(19). (Not quite true, but close enough.)
So we need to be exact within 2 parts in 10^(20). For comparison, this is like measuring the diameter of the moon's orbit down to the size of a hydrogen atom.
We don't have RNGs this good. Even if we did, there's enough random noise that you won't be able to measure it accurately enough.
(Consider for instance if the chance of a cosmic ray causing a bitflip was different turning a 1->0 then a 0->1...)
What is the chance that this computer will show the number I will eventually know is the killer's phone number?
Is the chances of you knowing - falsely or truly - that a certain phone number was the correct one dependent on the phone number?
You can certainly squeeze out a fair number of bits of entropy from it. But not to this level.
u/ajuc [+1] (5 hours later)
I don't know how to abuse it, but I know how to workaorund the 10 bits per day restriction.
We get back a real number of possibly infinite precision. So, if we can manipulate the probability to pass information from the potential futures - we can pass as much information as we want with 1 question).
So, we can assign bits in the final result to subgroups of people, and commit to lighting a particular light if X happens.
The algorithm is:
- assign n first bits in output to n subgroups.
- make a computer that generates random number from 1 to n with probabilities 2^(-k) for k in 1..n
- commit to testing fact number k depending on which number k you see on the screen, and lighting a bulb if the fact k is true
- check the light (that's the observation)
The first n bits of the final probability that the light is enabled gives you n facts about the future (unless I made an error in the math, but it can be fixed anyway).
u/None [+3] (21 hours later)
You very quickly fall prey to hardware errors.
Even assuming 10^(-12) error rate, that restricts you to no more than ~40 bits of information (as a zeroth order approximation).