The problemBag is confusing (with respect to multiple problems being
loaded), because it seems as though it is reloaded each time, making
each draw random rather than shuffled. Here is a proposed alternative,
based solely on the problemNum. If it’s not really important to be
precise with the weighting (that ouf of 10 draws, something with
probability .30 is chosen exactly three times), the last three lines
can be replaced with `problem = problems.eq(Math.floor(Math.random() *
typeIndex.length));` Otherwise, the ‘jostler’ substitutes for the
shuffle, preventing it from going in the sequential order except when
the weightSum is a mulitple of three. There probably are some slight
improvements that could be made, because when there are only two
equally weighted exercises, they alternate every time. One idea is to
duplicate the array if it is below some minimum length and than shuffle
according to a seed (so that it is deterministic). But it’s not clear
to me that this differs drastically from actual randomness.

Incompatible with:
- data-weight=“0”
- data-weight=“0.6” (permutations_1, permutations_and_combinations_2)
Change incompatible exercises; allow for data-weight="0"

- Changed all exercises with `data-weight` equal to some decimal.
- Deleted some exercises with `data-weight=“0”`
- Some exercises with `data-weight=“0”` used it as a template to reduce
redundancy. Since this is clever, I added the one line neccessary to
allow it.
- Deleted (inferior) alternative method that was commented out
- Included `id = $(problem).attr(“id”)` which was an oversight to not
be included the first time around.
- Changed `else if` to `else` because there should be no cases where
`typeof exerciseId === undefined` or `problems.length === 0`.
Fix problemId (to work without name) and 4-space indents (sorry)

Silly editor; tabs are for kids.
Merge pull request #132934 from Merbs/go-bagless

Going Bagless: changing out problemBag