Deterministic RNG: Difference between revisions

From A KoL Wiki
imported>Discordance
m Discordance moved page Seed Coefficients to Deterministic RNG: article covers more than seed coefficients, new title is a compromise between precise technical description and what is likely to be understood by players
imported>Discordance
No edit summary
Line 1: Line 1:
{{NeedsContent|Add links to the spading sheets, add explanations for selection of results}}{{NeedsSpading|Remaining seeds}}To reduce variance in ascensions some content uses random values from a random number generator seeded with a deterministic value. This results in the same values being generated whenever the seed variables are the same. Most commonly in-game this will be experienced as a given class in a path receiving the same items every ascension, while a different class or path receives a different set of items.
{{NeedsContent|Add links to the spading sheets, add explanations for selection of results}}{{NeedsSpading|Remaining seeds}}To reduce variance in ascensions some content uses formulas of different kinds to select results. Some use simple formulas while others produce random values from a random number generator seeded with a deterministic value. This results in the same values being generated whenever the input variables are the same. Most commonly in-game this will be experienced as a given class in a path receiving the same items every ascension, while a different class or path receives a different set of items.


==Seeds==
For brevity this article only covers formulas where the results can differ between players or ascensions.
 
==Algorithms==
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Content !! Date !! Seed coefficients !! Selection notes
! Content !! Date !! Input calculation !! Type !! Selection notes !! Spading sheet
|-
| [[Summon Confiscated Things]] || 2014 Aug || '''Unknown''' (suspected to use the same formula as continental juice bar) || '''Unknown''' || || [[Summon Confiscated Things#Notes|link]]
|-
|-
| [[Summon Confiscated Things]] || 2014 Aug || '''Unknown''' ||
| [[continental juice bar]] || 2015 Jan || ''[[Paths by number|pathID]]'' + 7×''[[Classes by number|classID]]'' + 5×''daycount'' || || || [[continental juice bar#Notes|link]]
|-
|-
| [[continental juice bar]] || 2015 Jan || ''[[Paths by number|pathID]]'' + ''[[Classes by number|classID]]'' + ''daycount'' ||
| [[protonic accelerator pack]] || 2016 Aug || 20×''[[Paths by number|pathID]]'' + 30×''[[Classes by number|classID]]'' + 10×''previousGhostsAscension'' || seed coefficient || [[protonic accelerator pack]] explains the selection criteria in more detail, the list of zones is adjusted before the result of mt_rand is resolved against it. ||
|-
|-
| [[protonic accelerator pack]] || 2016 Aug || 20×''[[Paths by number|pathID]]'' + 30×''[[Classes by number|classID]]'' + 10×''previousGhostsAscension'' ||
| [[cornucopia]] || 2016 Nov || ''[[Paths by number|pathID]]'' + ''[[Classes by number|classID]]'' + ''daycount'' + 3×(''previousCornuopias'' + 1) || || || [https://docs.google.com/spreadsheets/d/1jhQv9yGAln0pCpyyZuPMZsvZ3mBIdF_hGcLCcieOg0k/ link]
|-
|-
| [[cornucopia]] || 2016 Nov || ''[[Paths by number|pathID]]'' + ''[[Classes by number|classID]]'' + ''daycount'' + 3×(''previousCornuopias'' + 1) ||
| [[New-You Club Membership Form]] || 2017 May || ''[[Paths by number|pathID]]'' + ''[[Classes by number|classID]]'' + ''daycount'' || || || [[New-You Club Membership Form#Items_Received|link]]
|-
|-
| [[New-You Club Membership Form]] || 2017 May || ''[[Paths by number|pathID]]'' + 1×''[[Classes by number|classID]]'' + 1×''daycount'' ||
| [[Meteor Lore]] || 2017 Aug || '''Unknown''' || '''Unknown''' || || [https://docs.google.com/spreadsheets/d/1gSdyuH9KdrxVZZ8YZxbQZfCTPD68sS81vVNv17Oe2x4/ link]
|-
|-
| [[Meteor Lore]] || 2017 Aug || '''Unknown''' ||
| [[Daily Loathing Ballot]] || 2018 Nov || ''[[Paths by number|pathID]]'' + 9×''[[Classes by number|classID]]'' + 79×''daycount'' || seed coefficient ||  ||
|-
|-
| [[Daily Loathing Ballot]] || 2018 Nov || ''[[Paths by number|pathID]]'' + ''[[Classes by number|classID]]'' + 79×''daycount'' ||
| [[Two Crazy Random Summer]] || 2019 Summer || 100000×''[[Classes by number|classID]]'' + 12345×''[[Moon signs by number|moonSignID]]'' + 50×''[[Items by number|itemID]]'' || || || [https://github.com/kolmafia/kolmafia/tree/main/data/TCRS link]
|-
|-
| [[Two Crazy Random Summer]] || 2019 Summer || 100000×''[[Classes by number|classID]]'' + 12345×''[[Moon signs by number|moonSignID]]'' + 50×''[[Items by number|itemID]]'' ||
| [[Gaze at the Stars]] || 2019 Aug || ((''daynumber'' + 2 + ''[[Paths by number|pathID]]'') [[Wikipedia:Modulo|mod]] 8) + 1 = ''[[Moon signs by number|moonSignID]]'' || formula || ''daynumber'' is the days since kol came online and can be seen in the api status info. || [https://docs.google.com/spreadsheets/d/1ww4C5LJgBMs5tZZDcrlY1kVEJPu-bZ7gBjpgH2LNOaE/ link]
|-
|-
| [[Gaze at the Stars]] || 2019 Aug || ((''daynumber'' + 2 + ''[[Paths by number|pathID]]'') mod 8) + 1 = ''[[Moon signs by number|moonSignID]]'' || Not a seed, just a deterministic formula for finding the moon sign.
| [[Seek out a Bird]] || 2020 Jan || 11×''[[Paths by number|pathID]]'' + 23×''[[Classes by number|classID]]'' + 37×''daycount'' || seed coefficient || the algorithm predicts almost all of it; it does not predict the weapon damage/regen bit on the end, or bird name. || [https://docs.google.com/spreadsheets/d/1xFe8-TL5tb0Y0zQ-W4nyz4grA1jcNMoeOlbRUkrIQfU/ link]
|-
|-
| [[Seek out a Bird]] || 2020 Jan || 11×''[[Paths by number|pathID]]'' + 23×''[[Classes by number|classID]]'' + 37×''daycount'' || the formula predicts almost all of it; it does not predict the weapon damage/regen bit on the end, or bird name.
| [[fresh coat of paint]] || 2021 || '''Unknown''' || '''Unknown''' || || [https://docs.google.com/spreadsheets/d/1iIgX2V_uFiwtBXWwCUEox6bCy1mYBGmQumC3K9RTvVY/ link]
|-
|-
| [[fresh coat of paint]] || 2021 || '''Unknown''' ||
| [[Our Daily Candles™ order form]] || 2021 Aug || ''[[Paths by number|pathID]]'' + 19×''[[Classes by number|classID]]'' + 1×''daycount'' || || || [https://docs.google.com/spreadsheets/d/1LFQIHUWNC7GqpIq2JtB4H0XTz517KYwgokbHGO5Qovo/ link]
|-
|-
| [[Our Daily Candles™ order form]] || 2021 Aug || ''[[Paths by number|pathID]]'' + 19×''[[Classes by number|classID]]'' + 1×''daycount'' ||
|rowspan="2"| [[Daylight Shavings Helmet]] ||rowspan="2"| 2021 Nov || (''[[Classes by number|classID]]''×''beardBuffCountAscension'') [[Wikipedia:Modulo|mod]] 11 (if ''[[Classes by number|classID]]'' <7) ||rowspan="2"| formula ||rowspan="2"| selects from a list of the 11 buffs ||rowspan="2"| [https://docs.google.com/spreadsheets/d/17XglXmAM-HOB6nVBYVm2dLkbZ1OL4RYWueWz750vC00 link]
|-
|-
| [[Daylight Shavings Helmet]] || 2021 Nov || ((''[[Classes by number|classID]]'' mod 6 + 1)×''beardBuffCountAscension'') mod 11 (''[[Classes by number|classID]]'' >6) ||
| ((''[[Classes by number|classID]]'' [[Wikipedia:Modulo|mod]] 6 + 1)×''beardBuffCountAscension'') [[Wikipedia:Modulo|mod]] 11 (if ''[[Classes by number|classID]]'' >6)
|-
|-
| [[MayDay™ supply package]] || 2022 May || -1×''[[Paths by number|pathID]]'' + 11×''[[Classes by number|classID]]'' + 13×''daycount'' ||
| [[MayDay™ supply package]] || 2022 May || -1×''[[Paths by number|pathID]]'' + 11×''[[Classes by number|classID]]'' + 13×''daycount'' || || || [https://docs.google.com/spreadsheets/d/1QJrYiW27iXmaEpqiCat-VgdNREIsAyWOGHWrPMGpB5g/ link]
|-
|-
| [[Cookbookbat]] || 2022 Nov || 37×''[[Paths by number|pathID]]'' + 11×''[[Classes by number|classID]]'' + 420×(''daycount'' − 1)  + 69×''previousDropsToday'' ||
| [[Cookbookbat]] || 2022 Nov || 37×''[[Paths by number|pathID]]'' + 11×''[[Classes by number|classID]]'' + 420×(''daycount'' − 1)  + 69×''previousDropsToday'' || || ||
|-
|-
| [[Just the Facts]] || 2023 Sep || 11×''[[Paths by number|pathID]]'' + 421×''[[Classes by number|classID]]'' + ''[[Monsters by number|monsterID]]'' ||
| [[Just the Facts]] || 2023 Sep || 11×''[[Paths by number|pathID]]'' + 421×''[[Classes by number|classID]]'' + ''[[Monsters by number|monsterID]]'' || || || [https://docs.google.com/spreadsheets/d/1LQm0GGlFsiEjp20IIgjBgCPCtetnLpN96ek0MYxHB8A/ link]
|-
|-
| [[wardrobe-o-matic]] || 2023 Nov || '''Unknown''' ||
| [[wardrobe-o-matic]] || 2023 Nov || '''Unknown''' || '''Unknown''' || || [https://docs.google.com/spreadsheets/d/1roB9HArW579e1vXqZBn9SEiuH0Fi2FhLYZ7UWDLl9vk/ link]
|-
|-
| [[Prepare your Meal]] || 2024 || '''Unknown''' ||
| [[Prepare your Meal]] || 2024 || '''Unknown''' || '''Unknown''' || ||
|}
|}


[[Category:Game Mechanics]]
[[Category:Game Mechanics]]

Revision as of 20:51, 6 May 2025

This page is in need of content.

Add links to the spading sheets, add explanations for selection of results
There are some vague or non-exact figures and information on this page. Some spading is required.

Remaining seeds

To reduce variance in ascensions some content uses formulas of different kinds to select results. Some use simple formulas while others produce random values from a random number generator seeded with a deterministic value. This results in the same values being generated whenever the input variables are the same. Most commonly in-game this will be experienced as a given class in a path receiving the same items every ascension, while a different class or path receives a different set of items.

For brevity this article only covers formulas where the results can differ between players or ascensions.

Algorithms

Content Date Input calculation Type Selection notes Spading sheet
Summon Confiscated Things 2014 Aug Unknown (suspected to use the same formula as continental juice bar) Unknown link
continental juice bar 2015 Jan pathID + 7×classID + 5×daycount link
protonic accelerator pack 2016 Aug 20×pathID + 30×classID + 10×previousGhostsAscension seed coefficient protonic accelerator pack explains the selection criteria in more detail, the list of zones is adjusted before the result of mt_rand is resolved against it.
cornucopia 2016 Nov pathID + 7×classID + 5×daycount + 3×(previousCornuopias + 1) link
New-You Club Membership Form 2017 May pathID + 1×classID + 1×daycount link
Meteor Lore 2017 Aug Unknown Unknown link
Daily Loathing Ballot 2018 Nov pathID + 9×classID + 79×daycount seed coefficient
Two Crazy Random Summer 2019 Summer 100000×classID + 12345×moonSignID + 50×itemID link
Gaze at the Stars 2019 Aug ((daynumber + 2 + pathID) mod 8) + 1 = moonSignID formula daynumber is the days since kol came online and can be seen in the api status info. link
Seek out a Bird 2020 Jan 11×pathID + 23×classID + 37×daycount seed coefficient the algorithm predicts almost all of it; it does not predict the weapon damage/regen bit on the end, or bird name. link
fresh coat of paint 2021 Unknown Unknown link
Our Daily Candles™ order form 2021 Aug pathID + 19×classID + 1×daycount link
Daylight Shavings Helmet 2021 Nov (classID×beardBuffCountAscension) mod 11 (if classID <7) formula selects from a list of the 11 buffs link
((classID mod 6 + 1)×beardBuffCountAscension) mod 11 (if classID >6)
MayDay™ supply package 2022 May -1×pathID + 11×classID + 13×daycount link
Cookbookbat 2022 Nov 37×pathID + 11×classID + 420×(daycount − 1) + 69×previousDropsToday
Just the Facts 2023 Sep 11×pathID + 421×classID + monsterID link
wardrobe-o-matic 2023 Nov Unknown Unknown link
Prepare your Meal 2024 Unknown Unknown