RNG

Random number generation (or RNG) is the generation of a sequence of numbers that cannot be reasonably predicted better than by a random chance, usually through a random-number generator.https://en.wikipedia.org/wiki/Random_number_generation RNG is an essential feature in WARFRAME as it is involved in many components of the game such as graphics, weapon mechanics such as Critical Hits, generation of mission Tile Sets, and more. These game mechanics use varying degrees of randomness for performance purposes, with more rigorous methods taking longer to generate more "random" numbers as a tradeoff to computational speed.
Most importantly, RNG is essential to the core gameplay loop with obtaining in-game items. The drop chance of an item can determine its trade value and influence a player's means of obtaining it such as farming, trading, or purchasing with in-game or real-world currency. This article will explain some details on RNG in relation to WARFRAME's Drop Tables and should only be used for educational purposes since these mechanics may not apply to WARFRAME in its current state.
==Generating Random Numbers==
RNGChangesBugged.png|Poor RNG, very predictable but fastest performance; generation of a binary result (false/true, 0/1, coin flip) over multiple trials
RNGChangesFast.png|Better RNG, but still a discernible cyclical pattern
RNGChangesFixed.png|Best RNG, still deterministic but harder to discern pattern from human perspective; true RNG would have each result be independently drawn and not depend on previous results
As in many video gamesSee #External Links for some examples of random number generators in other games, random numbers are not generated non-deterministically since they use computational algorithms that give the appearance of a random sequence, also known as pseudorandom number generators. To the human eye, these numbers may look random, but they are actually from deterministic algorithms; under certain conditions and parameters, the algorithm will always return the same 'random' number. Throughout this article, the term "RNG" will refer to pseudorandom number generators.
===RNG Fairness===
A RNG is considered 'fair' when the random numbers it outputs correspond or results to the expected drop chances over an extended period of time (e.g. hundreds of runs) or throughout a population (in this case, WARFRAME's playerbase). In other words, the random numbers the RNG outputs follow a uniform distribution over an extended period of time.
Say one is trying to get 's main blueprint from a Radiant . According to the official drop table repository, the blueprint has a 10% chance of dropping so a single player would expect to get the blueprint after opening an average of Radiant . In the long term, say after opening 1,000 Radiant , the player would expect to get an average of 100 Gara Prime blueprints. These expected number of runs/drop table rolls or expected number of rewards over a number of runs/drop table rolls would be accurate if the written drop chances actually reflected on actual drop chances calculated by the in-game RNG. With a large sample size, if any deviation from these values is not within statistical error, then one could say that the 10% drop chance is "inaccurate".
Note that one cannot directly conclude that the drop tables are wrong or accurate from statistical methods (e.g. comparison of expected and observed count data using Chi-squared test), just the observations are statistically different from the expected drop rates. Use statistical analysis as a starting point for more research to be done (more sampling or rigorous tests) or to scrutinize drop tables' accuracy. There may be one or several reasons why your experience does not match expected rates:
*The displayed drop chances are inaccurate from in-game chances.
**The in-game drop sources are incorrect and outdated (e.g. in the Codex or Chat item link descriptions)
**The official drop tables are incorrect and outdated (i.e. https://www.warframe.com/droptables)
**The wiki's manually updated drop tables are incorrect and outdated (e.g. Module:DropTables/data or Module:Void/data)
*Players are farming the wrong mission/enemy or rolling the wrong drop table (like in the case of Disruption where squad performance affects whether or not a rotation reward pulls from A, B, or C drop table).
**There may be rare instances where a specific reward is missing from drop tables.
*There is a bug/issue with the game's RNG."Glen (our Tech Director) identified and fixed a serious distribution flaw with random number generation (RNG) in Warframe. While enemy drops were not seriously affected, a truncation in the random 'seed' within the mission reward script could result in a terrible chain of bad luck. While some players may have benefited from this (a chain of good luck) the distribution was terrible." - patch notes fixed a short-lived issue on Ayatan Amber Star drop rates: "Fixed Ayatan Amber Stars dropping far less frequently than before Deimos Arcana."
*There is an external factor that is not accounted for that is manipulating drop chances/RNG (e.g. having a squad member with a Mod Drop Chance Booster active).
*The possibility that a player is astronomically (un)lucky with their drops.
**If the RNG is truly fair with no manipulation, we would expect a (very) small portion of the player base to experience the extremes since every possible sequence of values is equally likely to appear."So, why is it hard to test whether a given sequence of numbers is random? The reason is that if your random number generator (or your die) is good, each possible sequence of values (or die rolls) is equally likely to appear. This means that a good random number generator will also produce sequences that look nonrandom to the human eye (e.g., a series of ten rolls of six on our die) and which also fail any statistical tests that we might expose it to. If you flip enough coins, you will get sequences of coin flips that seen in isolation from the rest of the sequence don't look random at all." - https://www.random.org/analysis/
***Say 30,000 players have farmed and built the Warframe. Knowing that the Rhino Neuroptics, Chassis, and Systems blueprints have a 38.72%, 38.72%, and 22.56% chance of droppingFrom official Drop Tables, retrieved 2022-02-14, we would say that there is a probability for a player to get five Systems blueprints in a row (similar to rolling the same number on a 5-sided die five times in a row). Therefore, we would expect around 18 players out of that 30k to have this (un)lucky experience (since ).
**Randomness is not necessarily uniform, especially in small sample sizes; with a large enough sample size, there is clustering in any random distribution and players may experience either end of the drop experience (extremely 'lucky' or 'unlucky' with their reward drops). For example, a binary random number generator may produce the following sequence: "1010111011101010010010011011100001011010000000011010000001111010011010001100001011010111110101111010". The value 0 is rolled eight times in a row which may seem nonrandom to humans since our cognitive understanding of probability tends to view randomness as a uniform process, where we immediately expect an equal number of 0's and 1's to be rolled between any given period of time.
*Player's confirmation bias through a relatively small sample size of drop experiences to support sweeping claims that drop tables are wrong. Player's method of sampling may be subjected to sampling bias.
**By the law of large numbers theorem, the average of the results should be close to expected value the more trials are done. In the context of WARFRAME, the more times a particular drop table is rolled, the closer that the resultant number of drops should match the expected number of drops calculated from drop chances.
===Seeding RNG===
It is unknown how WARFRAME generates the seed(s) for the random number generators that are used to determine drops from drop tables.
For seeding rudimentary random number generators, WARFRAME may use a machine-based random function (rand() in C++) to produce returns a pseudo-random number in the range between 0 and RAND_MAX.https://www.cplusplus.com/reference/cstdlib/rand/
Based on EE.log, a modified srand() is intialized with a unique, non-repeating 64-bit value between −(2^63) to 2^63 − 1 (e.g. do not expect 1 or 2,222,222,222,222,222,222 to be the seed of the RNG).
Sample RNG seeds:
*-7741523468968126435
*2541993907054812653
*-7134035214884351693
*-3354772158446415432
*9209242484211992089
*-451729703806461350
*1984020437910075226
===Weighted RNG===
In a weighted random number generators, certain values will tend to appear more than others due to a bias (or weights) associated with those values. See #Rarity Weights and #Bias on how WARFRAME uses weighted values in their drop tables to make some rewards drop more frequently than others and vice versa.
It is also known that randomized innate bonuses to Kuva and Tenet weapons are weighted towards the lower percentages.Kuva Lich Data Weapon Drop Rates, Elemental Bonus Chance, Birth Places, Names (Archived) Warframes chosen for Helminth Invigorations are also subjected to weighted values.
===Linear Congruential Generator===
One of the algorithms WARFRAME uses for generating pseudo-random numbers is Donald Knuth's version of a Linear Congruential Generator (LCG), scaling off rarity weights that influence the drop chances of items in /Lotus/Types/DropTables (enemy drop tables) and /Lotus/Types/Game/MissionDecks (mission drop tables).Devove, FineNerds, & VoiD_Glitch. (n.d.). WARFRAME - Rarity Weights and "Random" Number Generation. Retrieved from July 13, 2018 on VoiD_Glitch's Github (since takened down) Archived from the original on December 21, 2018.Navarro, J. (2016). Random Number Generation in Warframe. Navarroj.me. https://navarroj.me/WarframeRNG.html Archived from the original on July 10, 2021.
Note that the following LCG formula only applies to endless missions that involve getting rewards over time, such as Defense and Survival.
:X_n = (a(X_{n-1}) + c) \mod m 
Where X is the sequence of pseudorandom values, and
: m,\, 0 < m — "modulus", WARFRAME uses 1
: a,\, 0 < a < m — "multiplier"
: c,\, 0 \le c < m — "increment", randomly chosen based on seed value
: X_0,\, 0 \le X_0 < m — seed value for RNG
: n,\, n > 0 — current iteration or reward rotation number, an integer
This type of RNG is cyclical in nature, meaning that after a certain number of iterations or period, the generator will return the same sequence of values, subsquently completing a "cycle".
For example, a LCG with a short period can be created using the following parameters: m = 8, a = 3, c = 4, seed = 2147483647
The resultant sequence of numbers will look like:
1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, ...
In the cases of missions like Capture and Exterminate where players earn a reward upon mission completion, they simply use the process explained in #Reward Seeds and do not use LCG for random number generation.
==Rarity Weights==
WARFRAME uses four rarity weights in its RNG algorithm(s). These weights are the same across DropTables and MissionDecks, with the exception of /Lotus/Types/Game/MissionDecks/SortieRewards, which uses FixedWeights that are manually assigned by the developers.
DropTables and MissionDecks
Rarity 	Weight 	Percentage
Common 	0.755 	75.50%
Uncommon 	0.22 	22.00%
Rare 	0.02 	2.00%
Legendary 	0.005 	0.50%
0.755 + 0.22 + 0.02 + 0.005 = 1	0.755 + 0.22 + 0.02 + 0.005 = 1	0.755 + 0.22 + 0.02 + 0.005 = 1
==Normalization==
Normalization occurs when one or more of the rarity weights are not present in a DropTable or MissionDeck. It refers to the division of constants that are added up so values fall between zero (0) and one (1) within different data sets.
===Example Normalization Procedure===
Say a drop table has 1 Common, 1 Uncommon, 1 Rare, and 0 Legendary drops.
Normalize the rarity weightings by dividing by the sum of present rarity weightings
in drop table to ensure weightings add up to 100% exactly.
 Common: 0.755 / (0.755 + 0.22 + 0.02) = 0.758793969849246 = 75.8793969849246% ≈ 75.88%
Uncommon: 0.22 / (0.755 + 0.22 + 0.02) = 0.221105527638191 = 22.1105527638191% ≈ 22.11%
 Rare: 0.02 / (0.755 + 0.22 + 0.02) = 0.020100502512562 = 2.01005025125628% ≈ 2.01%
0.758793969849246 + 0.221105527638191 + 0.201005025125628 = 1 = 100%
===Normalization Visualization===
The two bar visuals below will demonstrate rarity weightings before and after normalization in a situation where a drop table has only uncommon and rare rarity weightings assigned to its item drops. Notice how the normalized weightings take up the entire range of all possible values between 0 inclusive and 1 exclusive while maintaining the same relative size between the different rarity weight classes (i.e. the same 11:1 ratio is maintained between uncommon and rare drops before and after normalization).
 Bar visualization of initial weights
▾ 0 	1 ▾ 	1 ▾
22.00% Uncommon Drop	2.00% Rare Drop	76% No Item Drop
 Bar visualization of normalized weights
▾ 0 	1 ▾
91.6667% Uncommon Drop	8.3333% Rare Drop
===Different Rarity Weightings after Normalization===
Present Weights 	Rarity 	Normalized Weight 	Percentage
All 	Common 	0.755 	75.50%
All 	Uncommon 	0.22 	22.00%
All 	Rare 	0.02 	2.00%
All 	Legendary 	0.005 	0.50%
All 	0.755 + 0.22 + 0.02 + 0.005 = 1 	0.755 + 0.22 + 0.02 + 0.005 = 1 	0.755 + 0.22 + 0.02 + 0.005 = 1
Common, Uncommon, and Rare 	Common 	 	75.88%
Common, Uncommon, and Rare 	Uncommon 	 	22.11%
Common, Uncommon, and Rare 	Rare 	 	2.01%
Common, Uncommon, and Rare 	Legendary 	0.00 	0.00%
Common, Uncommon, and Rare 	0.7588 + 0.2211 + 0.0201 + 0.00 = 1 	0.7588 + 0.2211 + 0.0201 + 0.00 = 1 	0.7588 + 0.2211 + 0.0201 + 0.00 = 1
Common, Uncommon, and Legendary	Common 	 	77.04%
Common, Uncommon, and Legendary	Uncommon 	 	22.45%
Common, Uncommon, and Legendary	Rare 	0.00 	0.00%
Common, Uncommon, and Legendary	Legendary 	 	0.51%
Common, Uncommon, and Legendary	0.7704 + 0.2245 + 0.00 + 0.0051 = 1 	0.7704 + 0.2245 + 0.00 + 0.0051 = 1 	0.7704 + 0.2245 + 0.00 + 0.0051 = 1
Common, Rare, and Legendary 	Common 	 	96.79%
Common, Rare, and Legendary 	Uncommon 	0.00 	0.00%
Common, Rare, and Legendary 	Rare 	 	2.56%
Common, Rare, and Legendary 	Legendary 	 	0.64%
Common, Rare, and Legendary 	0.96795 + 0.00 + 0.02564 + 0.00641 = 1	0.96795 + 0.00 + 0.02564 + 0.00641 = 1	0.96795 + 0.00 + 0.02564 + 0.00641 = 1
Uncommon, Rare, and Legendary 	Common 	0.00 	0.00%
Uncommon, Rare, and Legendary 	Uncommon 	 	89.80%
Uncommon, Rare, and Legendary 	Rare 	 	8.16%
Uncommon, Rare, and Legendary 	Legendary 	 	2.04%
Uncommon, Rare, and Legendary 	0.00 + 0.8980 + 0.0816 + 0.0204 = 1 	0.00 + 0.8980 + 0.0816 + 0.0204 = 1 	0.00 + 0.8980 + 0.0816 + 0.0204 = 1
Common and Uncommon 	Common 	 	77.44%
Common and Uncommon 	Uncommon 	 	22.56%
Common and Uncommon 	Rare 	0.00 	0.00%
Common and Uncommon 	Legendary 	0.00 	0.00%
Common and Uncommon 	0.7744 + 0.2256 + 0.00 + 0.00 = 1 	0.7744 + 0.2256 + 0.00 + 0.00 = 1 	0.7744 + 0.2256 + 0.00 + 0.00 = 1
Common and Rare 	Common 	 	97.42%
Common and Rare 	Uncommon 	0.00 	0.00%
Common and Rare 	Rare 	 	2.58%
Common and Rare 	Legendary 	0.00 	0.00%
Common and Rare 	0.9742 + 0.00 + 0.0258 + 0.00 = 1 	0.9742 + 0.00 + 0.0258 + 0.00 = 1 	0.9742 + 0.00 + 0.0258 + 0.00 = 1
Common and Legendary 	Common 	 	99.34%
Common and Legendary 	Uncommon 	0.00 	0.00%
Common and Legendary 	Rare 	0.00 	0.00%
Common and Legendary 	Legendary 	 	0.66%
Common and Legendary 	0.9934 + 0.00 + 0.00 + 0.0066 = 1 	0.9934 + 0.00 + 0.00 + 0.0066 = 1 	0.9934 + 0.00 + 0.00 + 0.0066 = 1
Uncommon and Rare 	Common 	0.00 	0.00%
Uncommon and Rare 	Uncommon 	 	91.67%
Uncommon and Rare 	Rare 	 	8.33%
Uncommon and Rare 	Legendary 	0.00 	0.00%
Uncommon and Rare 	0.00 + 0.9167 + 0.0833 + 0.00 = 1 	0.00 + 0.9167 + 0.0833 + 0.00 = 1 	0.00 + 0.9167 + 0.0833 + 0.00 = 1
Uncommon and Legendary 	Common 	0.00 	0.00%
Uncommon and Legendary 	Uncommon 	 	97.78%
Uncommon and Legendary 	Rare 	0.00 	0.00%
Uncommon and Legendary 	Legendary 	 	2.22%
Uncommon and Legendary 	0.00 + 0.9778 + 0.00 + 0.0222 = 1 	0.00 + 0.9778 + 0.00 + 0.0222 = 1 	0.00 + 0.9778 + 0.00 + 0.0222 = 1
Rare and Legendary 	Common 	0.00 	0.00%
Rare and Legendary 	Uncommon 	0.00 	0.00%
Rare and Legendary 	Rare 	 	80%
Rare and Legendary 	Legendary 	 	20%
Rare and Legendary 	0.00 + 0.00 + 0.80 + 0.20 = 1 	0.00 + 0.00 + 0.80 + 0.20 = 1 	0.00 + 0.00 + 0.80 + 0.20 = 1
Common only 	Common 	1.00 	100%
Common only 	Uncommon 	0.00 	0.00%
Common only 	Rare 	0.00 	0.00%
Common only 	Legendary 	0.00 	0.00%
Common only 	1.00 + 0.00 + 0.00 + 0.00 = 1 	1.00 + 0.00 + 0.00 + 0.00 = 1 	1.00 + 0.00 + 0.00 + 0.00 = 1
Uncommon only 	Common 	0.00 	0.00%
Uncommon only 	Uncommon 	1.00 	100%
Uncommon only 	Rare 	0.00 	0.00%
Uncommon only 	Legendary 	0.00 	0.00%
Uncommon only 	0.00 + 1.00 + 0.00 + 0.00 = 1 	0.00 + 1.00 + 0.00 + 0.00 = 1 	0.00 + 1.00 + 0.00 + 0.00 = 1
Rare only 	Common 	0.00 	0.00%
Rare only 	Uncommon 	0.00 	0.00%
Rare only 	Rare 	1.00 	100%
Rare only 	Legendary 	0.00 	0.00%
Rare only 	0.00 + 0.00 + 1.00 + 0.00 = 1 	0.00 + 0.00 + 1.00 + 0.00 = 1 	0.00 + 0.00 + 1.00 + 0.00 = 1
Legendary only 	Common 	0.00 	0.00%
Legendary only 	Uncommon 	0.00 	0.00%
Legendary only 	Rare 	0.00 	0.00%
Legendary only 	Legendary 	1.00 	100%
Legendary only 	0.00 + 0.00 + 0.00 + 1.00 = 1 	0.00 + 0.00 + 0.00 + 1.00 = 1 	0.00 + 0.00 + 0.00 + 1.00 = 1
===Example of Other Rarity Weightings===
 Evidence of different rarity weightings used in Isolation Vault Bounties
Level 30 - 40 Isolation Vault	Level 30 - 40 Isolation Vault 	Level 30 - 40 Isolation Vault
Rotation A 	Rotation A 	Rotation A
 	Final Stage 	Final Stage
 	Residual Boils 	Uncommon (25.00%)
 	Necramech Redirection 	Uncommon (12.50%)
 	2X Orokin Orientation Matrix 	Rare (6.25%)
 	Meso P4 Relic 	Rare (6.25%)
 	Residual Shock 	Uncommon (15.00%)
 	Necramech Steel Fiber 	Rare (7.50%)
 	2X Orokin Ballistics Matrix 	Rare (3.75%)
 	Neo D3 Relic 	Ultra Rare (1.88%)
 	Neo T4 Relic 	Ultra Rare (1.88%)
 	Theorem Contagion 	Uncommon (10.00%)
 	Necramech Thrusters 	Rare (4.00%)
 	Damaged Necramech Weapon Barrel	Rare (3.00%)
 	3X Scintillant 	Rare (2.00%)
 	2X Orokin Animus Matrix 	Legendary (0.50%)
 	Axi O5 Relic 	Legendary (0.50%)
 Bar visualization using in-game representation of rarity weightingsSee :File:T1IsoVaultRewards.jpg
▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	1 ▾ 	1 ▾ 	1 ▾ 	1 ▾ 	1 ▾
Residual Boils 	Necramech Redirection 	 	 	Residual Shock 	 	 	 	 	Theorem Contagion 	 	 	 	 	
  	  	  	  	 	 	 	 	 	 	 	 	 	 	
Common (25% + 12.5% + 6.25% + 6.25% = 50%)	Common (25% + 12.5% + 6.25% + 6.25% = 50%)	Common (25% + 12.5% + 6.25% + 6.25% = 50%)	Common (25% + 12.5% + 6.25% + 6.25% = 50%)	Uncommon (15% + 7.5% + 3.75% + 1.88% + 1.88% = 30.01%)	Uncommon (15% + 7.5% + 3.75% + 1.88% + 1.88% = 30.01%)	Uncommon (15% + 7.5% + 3.75% + 1.88% + 1.88% = 30.01%)	Uncommon (15% + 7.5% + 3.75% + 1.88% + 1.88% = 30.01%)	Uncommon (15% + 7.5% + 3.75% + 1.88% + 1.88% = 30.01%)	Rare (10% + 4% + 3% + 2% + 0.5% + 0.5% = 20%)	Rare (10% + 4% + 3% + 2% + 0.5% + 0.5% = 20%)	Rare (10% + 4% + 3% + 2% + 0.5% + 0.5% = 20%)	Rare (10% + 4% + 3% + 2% + 0.5% + 0.5% = 20%)	Rare (10% + 4% + 3% + 2% + 0.5% + 0.5% = 20%)	Rare (10% + 4% + 3% + 2% + 0.5% + 0.5% = 20%)
*Note that official drop table repository rounds values to nearest two decimal places.
==Rarity Classification==
Note that an item's drop chance's rarity weighting may not be the same as the item's rarity classification. For example, in the drop table shown in #Example of No Bias, uses the Common rarity weighting in calculating its drop chance, but its resultant drop chance falls between 10.00% - 33.32% so the drop table repository refers to it as an "Uncommon" reward.
=="Manipulating" RNG==
WARFRAME offers some in-game ways to increase player's chances of getting certain rewards. These include:
*Using to upgrade Void Relics' quality:
Quality 	Traces	Common 	Uncommon 	Rare
Intact (default)	0 	76% (25.33% each)	22% (11% each)	2%
Exceptional 	25 	70% (23.33% each)	26% (13% each)	4%
Flawless 	50 	60% (20% each) 	34% (17% each)	6%
Radiant 	100 	50% (16.67% each)	40% (20% each)	10%
*Having an active Resource Drop Chance Booster to double the chance at which resource drop tables are rolled.
*Having an active Mod Drop Chance Booster to double the chance at which mod drop tables are rolled.
*Having an active True Master's Font Resource Drop Chance blessing for 25% increase at which resource drop tables are rolled.
*Playing any The Steel Path mission for +100% Resource Drop Chance and +100% Mod Drop Chance increase.
*Playing any Dark Sector missions for a Resource Drop Chance bonus ranging from +10% to +35% depending on the node. 
*Using certain Warframe abilities (e.g. ' ) to reroll enemy drop tables under certain conditions. See Drop Tables#Rerolling Drop Tables Mechanic for details.
*Having an active 's for up to a 60% chance for enemies to drop additional on kill.
*Completing all bonus objectives for each stage of a single Bounty will reward players with another roll of the final stage's drop table (containing Uncommon and Rare rarity rewards of the bounty).
*Using a , , or to force the polarity of the resultant mod during Transmutation.
*Using mods of different rarities to increase the chance of a specific mod of a desired rarity during Transmutation. See Transmutation#Use for more details.
*When transmuting four Riven Mods, the resultant Riven Mod will always be of the same type as one of the transmuted Rivens.
==="Safety Nets" or "Pity System"===
WARFRAME has no known system where players are guaranteed a rarer reward from a drop table after rolling a drop table's contents multiple times. Drop chances of items in drop tables are static with the exception of Void Relics of different refinements (which can be considered as separate drop tables, one for each refinement level) and multi-stage Bounties (a separate drop table is assigned per stage internally despite what the UI says).
====Lich System====
However, as of , players can decrease the weapon pool that an Adversary/Lich may generate with by choosing not perform a Mercy finisher on downed Progenitors (Kuva Larvlings or Candidates). The weapon pool will reset upon generating a new Adversary/Lich or if all possible weapons are rejected."By skipping a Progenitor (choosing not to Mercy them) the spawned weapon is then put into a ‘reject’ pile for that round of Adversary generation, meaning that it will not appear again and ultimately reducing the weapon pool each time you ‘reject’.
The list of rejected weapons is cleared once you accept an Adversary and the process would start again from a clean slate for both Sister or Kuva Lich the next time you go looking for an Adversary. This list clearing applies to both Sister and Kuva Lich, meaning once the chosen Adversary is Converted or Vanquished, the list clears for both factions.
Test Cluster change: Kuva Lich/Sister of Parvos weapon reject list will now reset if you reject every possible weapon." - patch notes
For example, say a player is trying to get a from a Kuva Larvling, the chances of getting it naturally is as of . Without the "safety net", it would take an expected number of attempts before the player sees their first Kuva Bramma with 90% of the player base seeing at least one Kuva Bramma within ~43 attempts.To get the expected (average) number of attempts for a particular Kuva/Tenet weapon, we have to determine the distribution of the number of failures needed before getting one success. In other words, the average number of attempts without seeing a particular weapon before the player finally sees that weapon. The resultant probability distribution will follow a geometric distribution. 90% confidence level is determined using the geometric distribution's cumulative distribution function with 1/19 set as the probability for rolling a weapon. With the "safety net", all players are guaranteed (100% chance) to get one Kuva Bramma by 19 attempts, with the chance of getting a Kuva Bramma increasing rapidly with each attempt. For example:
*19 Kuva weapons in the pool ( chance), player sees a and skips, is removed from pool on mission completion
*18 weapons ( chance), player sees a and skips, is removed from pool on mission completion
*17 weapons ( chance), player sees a and skips, is removed from pool on mission completion
*...
*3 weapons ( chance), player sees a and skips, is removed from pool on mission completion
*2 weapons ( chance), player sees a and skips, is removed from pool on mission completion
*1 weapon ( chance), player sees a and chooses, pool is reset for next cycle (i.e. after current Lich is defeated)
====Archon Shards====
As of , Archon Hunts feature a pity system for Archon Shards where each time a player fails to get a Tauforged shard, the chance is increased by 20% until the player is guaranteed a Tauforged at 100%. This pity is tracked individually for each player in a squad and for each of the three shards: , , and .
===Diminishing Drop Chances===
It is known that in very specific circumstances, the drop chances of certain items will decrease over multiple rolls as defined by the developers."An Orokin Cell farming exploit was brought to our attention by not only players, but also our internal flagging system when such a method is tripped for misuse. In short, players were forcing the Hyena’s to spawn infinitely by entering/exiting rooms knowing that their Orokin Cell drop rate is 100%. As a result of this misuse, the Orokin Cell drop rate for the Hyena’s in the Razorback mission will diminish the more you spawn, to still allow for multiple drop attempts but without giving away the entire cake." - patch notes"Cronus blueprint now only a guaranteed drop the first time Tolstoj is completed, % chance to drop continues to decrease on additional runs." - patch notes
==Calculating an Item's Drop Chance==
The following formulae are used to determine the base drop chance per item before introducing #Bias to individual items.
\text{Common Drop Chance (Per Item)} = \frac{ \text{Base Common Drop Chance} }{ \text{Number Of Common Items} }
\text{Uncommon Drop Chance (Per Item)} = \frac{ \text{Base Uncommon Drop Chance} }{ \text{Number Of Uncommon Items} }
\text{Rare Drop Chance (Per Item)} = \frac{ \text{Base Rare Drop Chance} }{ \text{Number Of Rare Items} }
\text{Legendary Drop Chance (Per Item)} = \frac{ \text{Base Legendary Drop Chance} }{ \text{Number Of Legendary Items} }
===Example Procedure===
Say a drop table has 8 Common, 6 Uncommon, 4 Rare, and 2 Legendary drops.
The drop chances of each item rarity are (before presenting biases):
 Common: 0.755 / 8 = 0.094375 = 9.44%
 Uncommon: 0.22 / 6 = 0.0366666666667 = 3.67%
 Rare: 0.02 / 4 = 0.005 = 0.50%
Legendary: 0.005 / 2 = 0.0025 = 0.25%
Reversing operation to find chances of picking an item from a particular rarity tier:
 Common: 9.4375% × 8 = 75.5%
 Uncommon: 3.66666667% × 6 = 22%
 Rare: 0.5% × 4 = 2%
Legendary: 0.25% × 2 = 0.5%
==DropTables Variables==
The following are some variables that are present within /Lotus/Types/DropTables enemy Drop Tables.
===Bias===
Bias is a variable exclusive to DropTables that unequally weighs items within DropTables (through a positive (+) or negative (-) value change), even if said items have identical rarity weights. Bias can be applied to specific items within a particular DropTable but is not global across all. The more bias an item has (larger value), the lower its drop chance is. Conversely, the less bias an item has (smaller value), the higher its drop chance. Additionally, because bias scales from the rarity weight that the item it is impacting is assigned to, items with rarity weights that hold more weight than others will still tend to drop more often, depending on the amount of bias that is present.
====Example of No Bias in Enemy Drop Tables====
 No biasObtained from the official drop table repository https://www.warframe.com/droptables on 2021-07-06
Elite Lancer	Mod Drop Chance: 3.00%	Mod Drop Chance: 3.00%
 	 	Uncommon (25.29%)
 	 	Uncommon (25.29%)
 	 	Uncommon (25.29%)
 	 	Uncommon (11.06%)
 	50 Endo 	Uncommon (11.06%)
 	 	Legendary (0.67%)
 	 	Legendary (0.67%)
 	 	Legendary (0.67%)
 Bar visualization
▾ 0 	▾ 0 	▾ 0 	1 ▾ 	1 ▾ 	1 ▾ 	1 ▾ 	1 ▾
Revenge 	Quickdraw 	Redirection 	Razor Shot 	50 Endo 	 	 	
  	  	  	 	 	 	 	
Common (25.29% * 3 = 75.87% ≈ 75.88%)	Common (25.29% * 3 = 75.87% ≈ 75.88%)	Common (25.29% * 3 = 75.87% ≈ 75.88%)	Uncommon (11.06% * 2 = 22.12% ≈ 22.11%)	Uncommon (11.06% * 2 = 22.12% ≈ 22.11%)	Rare (0.67% * 3 = 2.01%)	Rare (0.67% * 3 = 2.01%)	Rare (0.67% * 3 = 2.01%)
*Note that drop chances shown in drop tables round to the nearest two decimal places, thus calculated rarity weightings may be off from the actual/expected numbers.
*The rarity classifiers in the table considers only the final drop chance and has nothing to do with rarity weighting
Notice that there is a clear distinction of different classes of items with the same drop chances. From here, one can deduce the rarity weightings each item used:
*Revenge, Quickdraw, and Redirection each have a 25.29% drop chance; which is close to the Common rarity weighting after normalization
*Razor Shot and 50 Endo each have a 11.06% drop chance; which is close to the Uncommon rarity weighting after normalization
*Thunderbolt, Undying Will, and Crossing Snakes each have a 0.67% drop chance; which is close to the Rare rarity weighting after normalization
Alternatively, if one has a Codex entry of a particular enemy completed, the reward drops shown will be color-coded based on the rarity weighting it used. See #Rarity Classification for more details.
====Example of Bias in Enemy Drop Tables====
 BiasObtained from the official drop table repository https://www.warframe.com/droptables on 2021-07-06
Eidolon Teralyst	Mod Drop Chance: 100.00%	Mod Drop Chance: 100.00%
 	 	Uncommon (22.22%)
 	 	Uncommon (22.22%)
 	 	Uncommon (22.22%)
 	 	Rare (8.33%)
 	 	Rare (8.33%)
 	 	Rare (8.33%)
 	 	Rare (8.33%)
 Bar visualization
▾ 0 	▾ 0 	▾ 0 	1 ▾ 	1 ▾ 	1 ▾ 	1 ▾
Lethal Momentum 	Terminal Velocity 	Fatal Acceleration 	Collision Force 	Pummel 	Crash Course 	Full Contact
  	  	  	 	 	 	
Uncommon (22.22% * 3 = 66.66%)	Uncommon (22.22% * 3 = 66.66%)	Uncommon (22.22% * 3 = 66.66%)	Rare (8.33% * 4 = 33.32%)	Rare (8.33% * 4 = 33.32%)	Rare (8.33% * 4 = 33.32%)	Rare (8.33% * 4 = 33.32%)
Note that because drop chance percentages in the official drop table repository are rounded to the nearest two decimals, the total drop chance will not always add up to 100% exactly. Internally, the game will probably use floating-point values with some truncation/rounding so that:
*Actual drop chances will add up to 100% exactly or
*The RNG will not generate numbers that are outside of the reward bins
In other words, there will never be an instance where a player will get no drops after successfully getting a chance to earn a reward from some drop table.
====Another Example of Bias in Enemy Drop Tables====
 BiasObtained from the official drop table repository https://www.warframe.com/droptables on 2021-07-06
Feyarch Specter	Mod Drop Chance: 100.00%	Mod Drop Chance: 100.00%
 	 	Common (51.52%)
 	 	Common (36.36%)
 	 	Rare (6.06%)
 	 	Rare (6.06%)
 Bar visualization
▾ 0 	▾ 0 	▾ 0 	1 ▾ 	1 ▾	1 ▾	1 ▾
Shotgun Amp 	Final Harbinger 	Empowered Blades 	High Noon 	 	 	
  	  	  	  	 	 	
Uncommon (51.52% + 36.36% = 87.88%)	Uncommon (51.52% + 36.36% = 87.88%)	Rare (6.06% * 2 = 12.12%)	Rare (6.06% * 2 = 12.12%)	 	 	
====Example of Bias in End-of-Mission Rewards====
 Bias involved
Void Storm (Veil Proxima) 	Void Storm (Veil Proxima)
6X Corrupted Holokey 	Uncommon (37.50%)
1200 Endo 	Uncommon (12.50%)
Sevagoth Chassis Blueprint 	Uncommon (10.00%)
Sevagoth Neuroptics Blueprint	Uncommon (10.00%)
Sevagoth Systems Blueprint 	Uncommon (10.00%)
Veil Resource Bundle 	Rare (2.50%)
Axi O5 Relic (Radiant) 	Rare (2.50%)
Axi A13 Relic (Radiant) 	Rare (2.50%)
Axi N7 Relic (Radiant) 	Rare (2.50%)
Axi T7 Relic (Radiant) 	Rare (2.50%)
Axi G6 Relic (Radiant) 	Rare (2.50%)
Axi C6 Relic (Radiant) 	Rare (2.50%)
Axi I1 Relic (Radiant) 	Rare (2.50%)
 Bar visualization
▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	1 ▾ 	1 ▾	1 ▾	1 ▾
6X Corrupted Holokey 	1200 Endo 	 	 	 	 	 	 	 	 	 	 	 	 	 	
  	  	  	  	  	 	 	 	 	 	 	 	 	 	 	
Rare (37.50% + 12.50% + (10% * 3) = 80%)	Rare (37.50% + 12.50% + (10% * 3) = 80%)	Rare (37.50% + 12.50% + (10% * 3) = 80%)	Rare (37.50% + 12.50% + (10% * 3) = 80%)	Rare (37.50% + 12.50% + (10% * 3) = 80%)	Legendary (2.50% * 8 = 20%)	Legendary (2.50% * 8 = 20%)	Legendary (2.50% * 8 = 20%)	Legendary (2.50% * 8 = 20%)	Legendary (2.50% * 8 = 20%)	Legendary (2.50% * 8 = 20%)	Legendary (2.50% * 8 = 20%)	Legendary (2.50% * 8 = 20%)	 	 	
Due to the drop table using only two rarity weightings (Rarity and Legendary), after #Normalization, Rare drop percentage is and Legendary is . Notice that despite 6X Corrupted Holokey, 1200 Endo, and Sevagoth's component blueprints using the Rare rarity weighting, they have different drop chances individually. This is due to bias involved to reduce/increase the drop chances of individual items. If there were no bias involved at all, we would expect each Rare item to have and each Legendary item to have .
====Example of Bias in Bounties====
 Bias in second Cetus bountyFrom official drop tables, retrieved 2021-10-31
Level 10 - 30 Cetus Bounty	Level 10 - 30 Cetus Bounty 	Level 10 - 30 Cetus Bounty
Rotation A 	Rotation A 	Rotation A
 	Stage 1 	Stage 1
 	Steel Fiber 	Uncommon (25.00%)
 	200X Oxium 	Uncommon (25.00%)
 	2,500 Credits Cache 	Uncommon (25.00%)
 	100 Endo 	Uncommon (25.00%)
 	Stage 2, Stage 3 of 4, and Stage 3 of 5	Stage 2, Stage 3 of 4, and Stage 3 of 5
 	Steel Fiber 	Uncommon (15.08%)
 	200X Oxium 	Uncommon (15.08%)
 	2,500 Credits Cache 	Uncommon (15.08%)
 	100 Endo 	Uncommon (15.08%)
 	Gara Systems Blueprint 	Rare (9.52%)
 	Charged Chamber 	Rare (9.52%)
 	Burning Wasp 	Rare (9.52%)
 	Lith B4 Relic 	Uncommon (11.11%)
 	Stage 4 of 5 	Stage 4 of 5
 	Steel Fiber 	Uncommon (14.50%)
 	200X Oxium 	Uncommon (14.50%)
 	2,500 Credits Cache 	Uncommon (14.50%)
 	100 Endo 	Uncommon (14.50%)
 	Gara Systems Blueprint 	Rare (9.16%)
 	Charged Chamber 	Rare (9.16%)
 	Burning Wasp 	Rare (9.16%)
 	Lith B4 Relic 	Uncommon (10.69%)
 	2X Control Module 	Rare (3.82%)
 	Final Stage 	Final Stage
 	Gara Systems Blueprint 	Uncommon (21.82%)
 	Charged Chamber 	Uncommon (21.82%)
 	Burning Wasp 	Uncommon (21.82%)
 	Lith B4 Relic 	Uncommon (25.45%)
 	2X Control Module 	Rare (9.09%)
 Bar visualization of Stage 1
▾ 0 	▾ 0 	▾ 0 	1 ▾
Steel Fiber 	200X Oxium 	2,500 Credits Cache 	100 Endo
  	  	  	 
Common (25% * 4 = 100%)	Common (25% * 4 = 100%)	Common (25% * 4 = 100%)	Common (25% * 4 = 100%)
 Bar visualization of Stage 2, Stage 3 of 4, and Stage 3 of 5
▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	1 ▾ 	1 ▾ 	1 ▾
Steel Fiber 	200X Oxium 	2,500 Credits Cache 	100 Endo 	Gara Systems Blueprint 	Charged Chamber 	Burning Wasp 	Lith B4 Relic
  	  	  	  	 	 	 	
Common (15.08% * 4 = 60.32%)	Common (15.08% * 4 = 60.32%)	Common (15.08% * 4 = 60.32%)	Common (15.08% * 4 = 60.32%)	Uncommon (9.52% * 3 + 11.11% = 39.67%)	Uncommon (9.52% * 3 + 11.11% = 39.67%)	Uncommon (9.52% * 3 + 11.11% = 39.67%)	Uncommon (9.52% * 3 + 11.11% = 39.67%)
 Bar visualization of Stage 4 of 5
▾ 0 	▾ 0 	▾ 0 	▾ 0 	▾ 0 	1 ▾ 	1 ▾ 	1 ▾ 	1 ▾
Steel Fiber 	200X Oxium 	2,500 Credits Cache 	100 Endo 	Gara Systems Blueprint 	Charged Chamber 	Burning Wasp 	Lith B4 Relic 	2X Control Module
  	  	  	  	 	 	 	 	
Common (14.50% * 4 = 58%)	Common (14.50% * 4 = 58%)	Common (14.50% * 4 = 58%)	Common (14.50% * 4 = 58%)	Uncommon (9.16% * 3 + 10.69% = 38.17%)	Uncommon (9.16% * 3 + 10.69% = 38.17%)	Uncommon (9.16% * 3 + 10.69% = 38.17%)	Uncommon (9.16% * 3 + 10.69% = 38.17%)	Rare (3.82%)
 Bar visualization of Final Stage
▾ 0 	▾ 0 	▾ 0 	1 ▾ 	1 ▾
Gara Systems Blueprint 	Charged Chamber 	Burning Wasp 	Lith B4 Relic 	2X Control Module
  	  	  	  	
Uncommon (21.82% * 3 + 25.45% = 90.91%)	Uncommon (21.82% * 3 + 25.45% = 90.91%)	Uncommon (21.82% * 3 + 25.45% = 90.91%)	Uncommon (21.82% * 3 + 25.45% = 90.91%)	Rare (9.09%)
*Lith B4 Relic has a slight bias applied, making it more likely to drop than the rest of the rewards that use the uncommon rarity weighting.
===Attenuation (global bias)===
Attenuation is a variable exclusive to DropTables. The boolean OverrideLevelAdjustedBiasAtten determines if attenuation is present in a DropTable or not. As the attenuation value increases, the drop chance of an item should decrease. However, because of how minor its set value (0.5) is (from one of the boolean's secondary variables, RareAttenMax), and that it impacts DropTables globally instead of individual items, it is impossible to accurately determine if it has a noticeable impact on items at all.
==MissionDecks Variables==
The following are some variables that are present within /Lotus/Types/Game/MissionDecks Mission Rewards tables.
===Reward Seeds===
rewardSeed is a variable exclusive to MissionDecks. It is a 64-bit signed integer that determines the missionReward players receive at the end of a mission. It is granted to you by the game's servers at the start of the mission and remains with you until its completion. rewardSeeds are given to the host, and members of the host's group receive the sessionId in order to participate in the same matchmaking session. You will only receive a rewardSeed when your client needs to distribute it to players in a group (as the host). This means that you will receive a rewardSeed if you begin a Public, Friends Only, or Invite Only session, but if you begin a Solo session, you will not be given a rewardSeed. Despite the SRand variable (the seed for the random number generator) being different for each player, each player will always receive the same missionReward as the host because of their identical sessionIds.This process can be partially observed in the game engine's log: EE.log
Examples of valid reward seeds:
*5981559039678745352
*-2947528797702211811
*-1912700803863294092
*-3758848590968623960
*Any value in the range of −(2^63) to 2^63 − 1 or −9223372036854775808 to +9223372036854775807 inclusive
;Samples in EE.log
Note that when players start a matchmaking session, the rewardSeed will be set to -1 before being updated with a random value.
3.260 Sys [Diag]: SRand seeded with: -3443681654817279495
...
4217.029 Net [Info]: MatchingServiceWeb::HostSession - settings: {"maxPlayers":4,"minPlayers":1,"privateSlots":0,"scoreLimit":15,"timeLimit":900,"gameModeId":0,"eloRating":28,"regionId":3,"difficulty":0,"hasStarted":false,"enableVoice":true,"matchType":"NORMAL","maps":[],"originalSessionId":"","usingPlayNow":false,"customSettings":"","rewardSeed":-1,"guildId":"","buildId":526217994,"freePublic":3,"freePrivate":0}
...
4217.154 Net [Info]: HostSessionCallback
4217.154 Net [Info]: sessionId=60e53502b0a65e27a219ad33
4217.154 Net [Info]: HostSessionDone (1, sessionId=60e53502b0a65e27a219ad33, rewardSeed=5981559039678745352)
...
4227.948 Net [Info]: NAT bound for client to <PLAYER_IP_ADDRESS>:4955
4228.005 Net [Info]: DeleteSessionCallback(1, {"sessionId":"60e53502b0a65e27a219ad33","rewardSeed":-2947528797702211811}
4228.005 Net [Info]: Deleted session
...
4231.370 Net [Info]: IRC out: QUIT :Logged out of game
4231.476 Net [Info]: DeleteSessionCallback(1, {"rewardSeed":-1912700803863294092}
4231.477 Net [Info]: Deleted session
==Prior to ==
Prior to changes, WARFRAME's random number generator had a flawed distribution, resulting in abnormal number of streaks of bad/good luck in the reward drops compared to a more "randomly" distributed RNG. Recall that WARFRAME uses the following formula for RNG in endless missions:
:X_n = (a(X_{n-1}) + c) \mod m 
Where X is the sequence of pseudorandom values, and
: m = 1 — "modulus"
: a = 1 — "multiplier"
: c,\, 0 \le c < m — "increment", randomly chosen based on seed with truncation of lower-order bits
: X_0, 0 \le X_0 \le 1 — initial seed value based on seed
: n,\, n > 0 — current iteration or reward rotation number, an integer
When players enter a mission, they get a random seed. Depending on that seed, they get a value between 0 and 1 inclusive which we will call "initial seed". After reaching a reward rotation, players get a random reward based on their initial seed.
On the next reward rotation, players will get a new random number depending on the seed. This new random number will be added to the initial seed. In other words, if the initial seed was 0.5, the interval picking number will be equal to . However, this "random" value is the same for every checkpoint after due to truncation in the RNG. For example, the 3rd reward rotation would be determined by .
The issue with this RNG is that it is more deterministic as one with this knowledge and the loot table drop chances (previously hidden from players until 2021-06-28 or just before https://forums.warframe.com/topic/809777-warframe-drop-rates-data/ - Warframe Drop Rates Data forum post) can determine their initial seed and on the 2nd reward rotation determine what increment is (approximately). By extension, one can calculate the approximate number of reward rotations until players get their desired reward. Another issue with this method is that players that rolled a low increment value may experience getting the same reward multiple reward rotations in a row; this is more prevalent if the player's first reward is a common item though it is possible for a player to receive consecutive rare drops with a very low or very high increment value.
===Sample Scenario (pre-)===
;Tier 3 Defense drop table
*Order matters in determining drops (pre- at least).
*Drop chances are rounded to nearest two decimal places.
*This pre- drop table are from a time where there is no such thing as AABCCCC... reward rotations (i.e. three different drop tables labeled A, B, and C). Instead, each reward rotation pulls from the same drop table.
**Each mission type has three difficulty tiers, each with a separate drop table labeled "Tier 1", "Tier 2", and "Tier 3" corresponding to "Easy", "Medium", and "Hard" respectively. Difficulty levels depend on starting enemy level ranges.
Tier 3 Defense	Tier 3 Defense 	Tier 3 Defense
 	Hellfire 	18.97%
 	Heated Charge 	18.97%
 	Convulsion 	3.16%
 	Deep Freeze 	0.15%
 	North Wind 	0.15%
 	Shocking Touch 	0.15%
 	North Wind 	0.15%
 	Hellfire 	18.97%
 	Stormbringer 	3.16%
 	Cryo Rounds 	0.15%
 	Split Chamber 	0.15%
 	Barrel Diffusion 	0.15%
 	Hell's Chamber 	0.15%
 	Stretch 	0.15%
 	Redirection 	3.16%
 	Streamline 	18.97%
 	Enemy Sense 	3.16%
 	Enemy Sense 	0.15%
 	Rush 	0.15%
 	Focus 	3.16%
 	Banshee Helmet Blueprint 	3.16%
 	Banshee Chassis Blueprint 	0.15%
 	Banshee Systems Blueprint 	3.16%
 	Orokin Tier 3 Extermination Key	0.15%
 Bar visualization of the above drop table
Hellfire	Heated Charge	 	 	 	 	 	Hellfire	 	 	 	 	 	 	 	Streamline	 	 	 	Focus 	 	 	 	 	
↑ 0 	↑ 0.1897 	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794 	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	↑ 0.3794	1 ↑	1 ↑	1 ↑
For example, in a pre- scenario where a player starts a Tier 3 Defense mission:
# At Wave 5, they get . Now they know their initial seed was between 0.1897 inclusive and 0.3794 exclusive. The way this is determined is:
## Create an interval between 0 inclusive and 1 exclusive consisting of all the possible rewards (note that the sum of drop chances is 1 or 100%). For example, Hellfire is 0.0 - 0.1897, Heated Charge is 0.1897 - 0.3794, etc.
## Find out where the initial seed fits in and that is the item players will get. In this case, 0.1897 ≤ initial_seed < 0.3794
# At Wave 10, they get again. Now they know their increment was approximately between 0 inclusive and 0.1897 exclusive or between 0.8104 inclusive and 1 exclusive.
#* 0.1897 ≤ < 0.3794
#** If initial_seed=0.2111 and increment=0.1512, then 
#** If initial_seed=0.3345 and increment=0.8556, then 
#** If initial_seed=0.3793 and increment=0.9999, then 
# In order to get the Orokin Tier 3 Extermination key, the last drop in the table, players would need to get a value between 0.9985 inclusive and 1 exclusive.
#* 0.9985 ≤ < 1
#** If initial_seed=0.2111 and increment=0.1512, then players will need to play at least 574 reward rotations to get their first key drop
#** If initial_seed=0.3345 and increment=0.8556, then players will need to play at least 217 reward rotations to get their first key drop
#** If initial_seed=0.3793 and increment=0.9999, then players will need to play at least 3,794 reward rotations to get their first key drop, with the next 14 reward rotations also providing the key drop (15 consecutive rare rewards!)
====Sample Code====
The following Lua snippet provides a sample sequence of one thousand values (i.e. 1,000 reward rotations pre-) based on the above scenario if initial_seed=0.2111 and increment=0.1512:
local initial_seed = 0.2111
local increment = 0.1512
local previous = initial_seed
-- Rotation #574, #865 will hit the threshold needed for 
-- Orokin Tier 3 Extermination key
for i = 1, 1000, 1 do
 local result = (previous + increment) % 1
 previous = result
 if (result >= 0.9985 and result < 1) then
 print(i, result, "hit") 
 else
 print(i, result)
 end
end
==Other Uses of RNG==
In WARFRAME, RNG is not just used to determine whether or not an item will drop for players. It is also used in, but not limited to:
==External Links==
*
;RNG
*
*
*
*
*
*
*
*
*
*
;RNG in other games
*
*
*
*
==References==
*User blog:FINNER/Warframe Expected & Nearly Guaranteed Numbers - An Explanation
==Patch History==
Category:Mechanics
Category:Real-World References
Category:Development