The halfling's Lucky trait deals with the die roll (PHB, p. 28):
When you roll a 1 on an attack roll, ability check, or saving throw, you can reroll the die and must use the new roll.
And so does Advantage/Disadvantage, since it refers to the same trait (PHB, p. 173):
For example, if a halfling has advantage on an ability check and rolls a 1 and a 13, the halfling could use the Lucky trait to reroll the 1.
The Divination wizard's Portent feature, on the other hand, deals with the check as a whole:
You can replace any attack roll, saving throw, or ability check ... with one of these foretelling rolls.
And here comes the interesting part - the three emphasized terms are only mentioned in rules as actions, not numbers:
The description of attack rolls (PHB, p. 194):
To make an attack roll, roll a d20 and add the appropriate modifiers.
If the total of the roll plus modifiers equals or exceeds the
target’s Armor Class (AC), the attack hits.
Saving throws (PHB, p. 179):
To make a saving throw, roll a d20 and add the appropriate ability
modifier. [...]
A saving throw can be modified by a situational bonus or penalty [...]
[...] proficiency in a saving throw lets a character add his or her
proficiency bonus to saving throws made using a particular ability
score. [...]
And ability checks (PHB, p. 171):
To make an ability check, roll a d20 and add the relevant ability
modifier. As with other d20 rolls, apply bonuses and penalties, and
compare the total to the DC.
All three go the standard way:
- Roll a d20, get a number
- In case of (dis-)advantage: roll another d20, get a new number (or
keep the old)
- Add bonuses/penalties, get the final number
- Compare the final number with the AC/DC and get the final
success/failure answer
From the strict RAW reading of Portent, we have to replace steps 1–4 (the whole check) with a number (foretelling roll), which makes no sense, as the result has to be boolean – success/failure.
If we loosen the restrictions, the logical thing to say would be "In the context of Portent, attack roll/saving throw/ability check is the number to be compared with the AC/DC" (i.e. the result of Step 3 above). In this interpretation "You must choose to do so before the roll" means that the decision is made before Step 1 and therefore no actual die roll happens. The modifiers are applied to the foretold roll as normal. This interpretation is reinforced by an unofficial tweet from March 2015 by rules designer Jeremy Crawford:
The portent die is intended to replace a d20 roll only, not any modifiers applied to it.
This result is Rules As Intended as well; the whole point is that the character knows in advance what is going to happen.
There's a 59.5125% chance of survival.
Naively, we might have thought there'd be a 55% chance of survival as 55% of the roll results are good. But the 20 is a slightly better result than the 1 is a bad one, so that pushes up the probability a bit. Let's see how.
The approach
The simplest way to tackle this is to look at the probabilities of surviving in exclusive ways, then combine those probabilities. Remember the rules of combining probabilities of multiple events:
- If we want to know the probability of (A or B), when A and B don't overlap, we sum the probability of A with the probability of B. (We'll be constructing all of our scenarios below without overlap.)
- If we want to know the probability of (A and B), we multiply the probability of A with the probability of B.
Notation
We'll use a number or a range of numbers in brackets to indicate the probability of that result on a d20. That is, \$[4]=\frac 1 {20}\$, \$[7]=\frac 1 {20}\$, and \$[10-20]=\frac {11} {20}\$. In this manner we'll generally be concerned with four different results: \$[1]\$ (\$\frac 1 {20}\$ chance), \$[2-9]\$ (\$\frac 8 {20}\$), \$[10-19]\$ (\$\frac {10} {20}\$), and \$[20]\$ (\$\frac 1 {20}\$ again).
When we want to indicate a particular sequence of rolls, we'll list them in order: \$[1][1-9]\$ would be read as "the probability of rolling a 1, then some single-digit number."
When we want to indicate a particular selection of rolls, but don't care about their order* we'll group the unordered results in curly-brackets. Thus \$\{[2-9][10-19][2-9]\}[20]\$ would be read as "the probability of rolling two simple failures and a simple success in any order, followed by a 20."
Ways to stabilize after...
The probabilities of stabilizing on the first, second, third, &c. rolls are exclusive: one can stabilize on the first or on the second, but not both. So we'll determine each of these probabilities and sum them up according to our "or-rule" from above.
1 roll:
$$
[20]=\frac 1 {20}
$$
2 rolls:
$$
[1-19][20]= \frac{19}{20} \times \frac 1 {20}= \frac{19}{400}
$$
3 rolls:
$$
\begin{align}
[10-19][10-19][10-19] = \frac {10} {20} \times \frac{10}{20} \times \frac{10}{20} &= \frac 1 8 \\
\text{or} \quad \{[1][10-19]\}[20] = \left\{2 \times \left(\frac 1 {20} \times \frac{10}{20}\right)\right\} \times \frac 1 {20} &= \frac 1 {400} \\
\text{or} \quad [2-19][2-19][20] = \frac{18}{20} \times \frac{18}{20} \times \frac 1{20} &= \frac{81}{2000}
\end{align}
$$
$$
\left(\text{total: } \frac 1 8 + \frac 1 {400} + \frac{81}{2000} = \frac{21}{125}\right)
$$
4 rolls:
$$
\begin{align}
\{[10-19][10-19][1-9]\}[10-20]=\left\{3 \times \left( \frac{10}{20} \times \frac{10}{20} \times \frac 9 {20}\right)\right\} \times \frac{11}{20} &= \frac {297}{1600}\\
\text{or} \quad \{[2-9][2-9][10-19]\}[20]=\left\{3 \times \left(\frac{8}{20} \times \frac{8}{20} \times \frac {10}{20}\right)\right\} \times \frac {1}{20} &= \frac{3}{250}
\end{align}
$$
$$
\left(\text{total: } \frac {297}{1600} + \frac{3}{250} = \frac{1581}{8000}\right)
$$
5 rolls:
$$
\{[2-9][2-9][10-19][10-19]\}[10-20]=\left\{6 \times \left(\frac{8}{20} \times \frac{8}{20} \times \frac{10}{20} \times \frac{10}{20}\right)\right\} \times \frac{11}{20}=\frac{33}{250}
$$
Summing it all up:
$$
\frac 1 {20} + \frac{19}{400} + \frac{21}{125} + \frac{1581}{8000} + \frac{33}{250} = \frac{4761}{8000} = 0.595125
$$
Bonus for reading this far: expected time to recovery
With these probabilities in hand it's easy to give an expected time-of-stabilization for those that do stabilize:
$$
t_\text{stable}
= \dfrac{
\left(
\begin{align}
1 & \times \frac 1 {20} \\
+2 & \times \frac{19}{400} \\
+3 & \times \frac{21}{125} \\
+4 & \times \frac{1581}{8000} \\
+5 & \times \frac{33}{250}
\end{align}
\right)
}{
\frac{4761}{8000}
} = 3.5278 \, \text{rounds, or about 21 sec}
$$
* - Order is really important. Sometimes. For instance, if we want to know the probability of the first two rolls being a success and a failure, we have to count all the ways that we could get a success then a failure, and add on all the ways we could get a failure then a success.
But some of our rolls are indistinguishable events, and that's where it gets fun. If we want to count the ways of our first three rolls being two failures and a success we only have three orders we can consider (FFS, FSF, SFF), not the six one might expect (ABC, ACB, BAC, BCA, CAB, CBA).
The count of possible arrangements of n objects with multiplicities \$m_1, m_2, \dots\$ is \$N = \dfrac{n!}{m_1! \times m_2! \times \dots}\$. See if you can spot the three times this pops up!
Best Answer
The easiest way to gain advantage on a death saving throw is to use inspiration.
Alternatively, you could be a Wild Magic Sorcerer, and use Tides of Chaos. Well, probably.
The 3rd- level spell Beacon of Hope explicitly grants advantage on death saving throws for its duration.
Fighters can use Indomitable to reroll a failed saving throw - not precisely the same as advantage, but pretty close.
There are almost certainly more options that I've missed - getting advantage on things is a pretty fundamental part of 5e.