#[05AB1E](https://github.com/Adriandmen/05AB1E/wiki/Commands), <s>23</s> 22 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)

 [тε5°x<Ýs/<Ω}DnOtDî#}/

Implements the 2nd algorithm.

[Try it online](https://tio.run/##ATAAz/9vc2FiaWX//1vRgs61NcKweDzDnXMvPM6pfURuT3REw64jfS////8tLW5vLWxhenk) or [get a few more random outputs](https://tio.run/##ATMAzP9vc2FiaWX/NUb/W9GCzrU1wrB4PMOdcy88zql9RG5PdETDriN9L/8s//8tLW5vLWxhenk).

**Explanation:**

NOTE: 05AB1E doesn't have a builtin to get a random decimal value in the range \$[0,1)\$. Instead, I create a list in increments of \$0.00001\$, and pick random values from that list. This increment could be changed to \$0.000000001\$ by changing the `5` to `9` in the code (although it would become rather slow..).

<!-- language-all: lang-python -->

 [ # Start an infinite loop:
 тε # Push 100, and map (basically, create a list with 3 values):
 5° # Push 100,000 (10**5)
 © # Store it in variable `®` (without popping)
 x # Double it to 200,000 (without popping)
 < # Decrease it by 1 to 199,999
 Ý # Create a list in the range [0, 199,999]
 s/ # Swap to get 100,000 again, and divide each value in the list by this
 < # And then decrease by 1 to change the range [0,2) to [-1,1)
 Ω # And pop and push a random value from this list
 } # After the map, we have our three random values
 D # Duplicate this list
 n # Square each inner value
 O # Take the sum of these squares
 t # Take the square-root of that
 D # Duplicate that as well
 î # Ceil it, and if it's now exactly 1:
 # # Stop the infinite loop
 }/ # After the infinite loop: normalize by dividing
 # (after which the result is output implicitly)