Nice BASH Random Implementation

05 Mar 2009 20:20

Today I wrote something like this in BASH:

echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))

This prints a random number from 0 to 3. How it works?

Firstly the command below prints one random byte using special Unix /dev/urandom device:

head -c 1 /dev/urandom

Piping this to | base64 gives us base64 representation of the byte.

Base64 is a method of encoding 8-bit data as human-readable strings using only 64 visible characters (letters, digits and some !@ and stuff). Whitespace is always ignored when reading base64 string. The standard is really nice, because you can for example read a base64-encoded file with a phone or send a printout of it with a classic mail. Because all the characters are human-readable, one can enter them and decode the original message. The format is used widely for sending emails.

It is important for us, that running base64 on a random byte gives us 2 bytes that are only "normal" characters, ie don't have any special meaning in any context (like some white characters may have).

Now comes the tricky part:

printf '%d' "'`head -c 1 /dev/urandom | base64`"

printf '%d' "'a" would give us 97 — this is the ASCII code of letter a. Remember we get two bytes of data after base64? No problem, printf cares in this case only about the first character.

As you may notice the output of this is one of these:

  • 43
  • a number between 47 and 57
  • a number between 65 and 90
  • a number between 97 and 122

This gives us 64 possibilities. Great! 6 bits is just the same as 64.

This is when we get to BASH arithmetics. This is how it works:

echo $((7*12))

This should print 84 obviously. Knowing that enclosing a string in $( and ) causes BASH to run the enclosed command and return its results (just like using the backticks: `command`) this is everything.

The % means modulo in BASH arithmetic (just like in C, Java, Python, PHP, …), so this:

echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64`")%4))

prints the number we generated (one of 43, 47…57, 65…90, 97…122) modulo 4. This needs to be 0, 1, 2 or 3.

Let's now check what the probability of receiving each of the digits.

Suppose /dev/urandom prints every possible byte with equal probability. We'll now analyze each byte (possibly) generated by /dev/urandom, it's base64 representation, ASCII code of first byte of the representation and the modulo 4 of it. We'll use a table for it:

1364
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1365
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1366
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1367
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1368
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1369
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 133) 1384
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1385
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1386
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1387
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1388
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1389
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 135) 1444
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1445
printf '%d' "'`head -c 1 /dev/urandom | base64`"
1446
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1447
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1448
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1449
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 141) 1484
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1485
echo $((7*12))
1486
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1487
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1488
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1489
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 145) 1504
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1505
echo $((7*12))
1506
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1507
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1508
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1509
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 147) 1524
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1525
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1526
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1527
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1528
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1529
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 149) 1544
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1545
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1546
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1547
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1548
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1549
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 151) 1604
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1605
printf '%d' "'`head -c 1 /dev/urandom | base64`"
1606
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1607
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1608
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1609
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 157) 1624
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1625
printf '%d' "'`head -c 1 /dev/urandom | base64`"
1626
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1627
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1628
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1629
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 159) 1684
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1685
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1686
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1687
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1688
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1689
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 165) 1704
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1705
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1706
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1707
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1708
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1709
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 167) 1764
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1765
printf '%d' "'`head -c 1 /dev/urandom | base64`"
1766
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1767
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1768
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1769
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 173) 1784
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1785
printf '%d' "'`head -c 1 /dev/urandom | base64`"
1786
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1787
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1788
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1789
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 175) 1844
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1845
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1846
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1847
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1848
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1849
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 181) 1864
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1865
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1866
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1867
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1868
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1869
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 183) 1884
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1885
head -c 1 /dev/urandom
1886
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1887
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1888
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1889
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 185) 1904
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1905
head -c 1 /dev/urandom
1906
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1907
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1908
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1909
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 187) 1924
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1925
printf '%d' "'`head -c 1 /dev/urandom | base64`"
1926
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1927
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1928
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1929
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 189) 1944
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1945
printf '%d' "'`head -c 1 /dev/urandom | base64`"
1946
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1947
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1948
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1949
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 191) 2004
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2005
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2006
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2007
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2008
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2009
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 197) 2024
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2025
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2026
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2027
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2028
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2029
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 199) 2084
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2085
printf '%d' "'`head -c 1 /dev/urandom | base64`"
2086
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2087
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2088
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2089
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 205) 2104
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2105
printf '%d' "'`head -c 1 /dev/urandom | base64`"
2106
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2107
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2108
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2109
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 207) 2124
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2125
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2126
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2127
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2128
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2129
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 209) 2144
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2145
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2146
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2147
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2148
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2149
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 211) 2204
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2205
printf '%d' "'`head -c 1 /dev/urandom | base64`"
2206
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2207
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2208
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2209
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 217) 2224
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2225
printf '%d' "'`head -c 1 /dev/urandom | base64`"
2226
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2227
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2228
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2229
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 219) 2284
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2285
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2286
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2287
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2288
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2289
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 225) 2304
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2305
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2306
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2307
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2308
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2309
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 227) 2364
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2365
printf '%d' "'`head -c 1 /dev/urandom | base64`"
2366
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2367
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2368
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2369
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 233) 2384
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2385
printf '%d' "'`head -c 1 /dev/urandom | base64`"
2386
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2387
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2388
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2389
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 235) 2444
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2445
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2446
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2447
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2448
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2449
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 241) 2464
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2465
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2466
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2467
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2468
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2469
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 243) 2483 2484
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2485
head -c 1 /dev/urandom
2486
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2487
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2488
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2489
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 245) 2503 2504
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2505
head -c 1 /dev/urandom
2506
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2507
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2508
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2509
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 247) 2564
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2565
echo $((7*12))
2566
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2567
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2568
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2569
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 253) 2584
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2585
echo $((7*12))
2586
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2587
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2588
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2589
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 255)
/dev/urandom byte base64 code of the first letter of base64 the same modulo 4
(code 0) AA== 65 1
(code 1) AQ== 65 1
(code 2) Ag== 65 1
(code 3) Aw== 65 1
(code 4) BA== 66 2
(code 5) BQ== 66 2
(code 6) Bg== 66 2
(code 7) Bw== 66 2
(code 8) CA== 67 3
(code 9) CQ== 67 3
(code 10) Cg== 67 3
(code 11) Cw== 67 3
(code 12) DA== 68 0
(code 13) DQ== 68 0
(␌⎺␍␊ 14) Dg== 68 0
(code 15) Dw== 68 0
(code 16) EA== 69 1
(code 17) EQ== 69 1
(code 18) Eg== 69 1
(code 19) Ew== 69 1
(code 20) FA== 70 2
(code 21) FQ== 70 2
(code 22) Fg== 70 2
(code 23) Fw== 70 2
(code 24) GA== 71 3
(code 25) GQ== 71 3
(code 26) Gg== 71 3
(code 27) Gw== 71 3
(code 28) HA== 72 0
(code 29) HQ== 72 0
(code 30) Hg== 72 0
(code 31) Hw== 72 0
(code 32) IA== 73 1
! (code 33) IQ== 73 1
" (code 34) Ig== 73 1
# (code 35) Iw== 73 1
$ (code 36) JA== 74 2
% (code 37) JQ== 74 2
& (code 38) Jg== 74 2
' (code 39) Jw== 74 2
( (code 40) KA== 75 3
) (code 41) KQ== 75 3
* (code 42) Kg== 75 3
+ (code 43) Kw== 75 3
, (code 44) LA== 76 0
- (code 45) LQ== 76 0
. (code 46) Lg== 76 0
/ (code 47) Lw== 76 0
0 (code 48) MA== 77 1
1 (code 49) MQ== 77 1
2 (code 50) Mg== 77 1
3 (code 51) Mw== 77 1
4 (code 52) NA== 78 2
5 (code 53) NQ== 78 2
6 (code 54) Ng== 78 2
7 (code 55) Nw== 78 2
8 (code 56) OA== 79 3
9 (code 57) OQ== 79 3
: (code 58) Og== 79 3
; (code 59) Ow== 79 3
< (code 60) PA== 80 0
= (code 61) PQ== 80 0
> (code 62) Pg== 80 0
? (code 63) Pw== 80 0
@ (code 64) QA== 81 1
A (code 65) QQ== 81 1
B (code 66) Qg== 81 1
C (code 67) Qw== 81 1
D (code 68) RA== 82 2
E (code 69) RQ== 82 2
F (code 70) Rg== 82 2
G (code 71) Rw== 82 2
H (code 72) SA== 83 3
I (code 73) SQ== 83 3
J (code 74) Sg== 83 3
K (code 75) Sw== 83 3
L (code 76) TA== 84 0
M (code 77) TQ== 84 0
N (code 78) Tg== 84 0
O (code 79) Tw== 84 0
P (code 80) UA== 85 1
Q (code 81) UQ== 85 1
R (code 82) Ug== 85 1
S (code 83) Uw== 85 1
T (code 84) VA== 86 2
U (code 85) VQ== 86 2
V (code 86) Vg== 86 2
W (code 87) Vw== 86 2
X (code 88) WA== 87 3
Y (code 89) WQ== 87 3
Z (code 90) Wg== 87 3
[ (code 91) Ww== 87 3
\ (code 92) XA== 88 0
] (code 93) XQ== 88 0
^ (code 94) Xg== 88 0
_ (code 95) Xw== 88 0
` (code 96) YA== 89 1
a (code 97) YQ== 89 1
b (code 98) Yg== 89 1
c (code 99) Yw== 89 1
d (code 100) ZA== 90 2
e (code 101) ZQ== 90 2
f (code 102) Zg== 90 2
g (code 103) Zw== 90 2
h (code 104) aA== 97 1
i (code 105) aQ== 97 1
j (code 106) ag== 97 1
k (code 107) aw== 97 1
l (code 108) bA== 98 2
m (code 109) bQ== 98 2
n (code 110) bg== 98 2
o (code 111) bw== 98 2
p (code 112) cA== 99 3
q (code 113) cQ== 99 3
r (code 114) cg== 99 3
s (code 115) cw== 99 3
t (code 116) dA== 100 0
u (code 117) dQ== 100 0
v (code 118) dg== 100 0
w (code 119) dw== 100 0
x (code 120) eA== 101 1
y (code 121) eQ== 101 1
z (code 122) eg== 101 1
{ (code 123) ew== 101 1
| (code 124) fA== 102 2
} (code 125) fQ== 102 2
~ (code 126) fg== 102 2
 (code 127) fw== 102 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1320
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1321
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1322
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1323
1324
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1325
echo $((7*12))
1326
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1327
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1328
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1329
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 129)
gQ== 103 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1340
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1341
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1342
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1343
1344
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1345
echo $((7*12))
1346
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1347
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1348
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1349
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 131)
gw== 103 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1360
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1361
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1362
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1363
hQ== 104 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1380
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1381
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1382
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1383
hw== 104 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1400
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1401
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1402
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1403
1404
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1405
head -c 1 /dev/urandom
1406
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1407
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1408
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1409
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 137)
iQ== 105 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1420
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1421
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1422
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1423
1424
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1425
head -c 1 /dev/urandom
1426
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1427
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1428
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1429
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 139)
iw== 105 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1440
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1441
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1442
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1443
jQ== 106 2
(code 142) jg== 106 2
(code 143) jw== 106 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1480
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1481
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1482
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1483
kQ== 107 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1500
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1501
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1502
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1503
kw== 107 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1520
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1521
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1522
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1523
lQ== 108 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1540
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1541
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1542
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1543
lw== 108 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1560
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1561
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1562
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1563
1564
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1565
head -c 1 /dev/urandom
1566
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1567
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1568
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1569
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 153)
mQ== 109 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1580
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1581
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1582
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1583
1584
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1585
head -c 1 /dev/urandom
1586
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1587
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1588
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1589
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 155)
mw== 109 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1600
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1601
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1602
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1603
nQ== 110 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1620
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1621
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1622
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1623
nw== 110 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1640
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1641
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1642
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1643
1644
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1645
echo $((7*12))
1646
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1647
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1648
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1649
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 161)
oQ== 111 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1660
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1661
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1662
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1663
1664
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1665
echo $((7*12))
1666
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1667
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1668
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1669
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 163)
ow== 111 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1680
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1681
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1682
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1683
pQ== 112 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1700
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1701
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1702
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1703
pw== 112 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1720
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1721
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1722
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1723
1724
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1725
head -c 1 /dev/urandom
1726
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1727
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1728
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1729
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 169)
qQ== 113 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1740
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1741
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1742
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1743
1744
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1745
head -c 1 /dev/urandom
1746
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1747
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1748
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1749
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 171)
qw== 113 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1760
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1761
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1762
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1763
rQ== 114 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1780
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1781
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1782
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1783
rw== 114 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1800
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1801
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1802
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1803
1804
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1805
echo $((7*12))
1806
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1807
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1808
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1809
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 177)
sQ== 115 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1820
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1821
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1822
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1823
1824
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1825
echo $((7*12))
1826
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1827
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1828
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1829
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 179)
sw== 115 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1840
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1841
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1842
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1843
tQ== 116 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1860
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1861
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1862
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1863
tw== 116 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1880
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1881
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1882
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1883
uQ== 117 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1900
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1901
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1902
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1903
uw== 117 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1920
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1921
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1922
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1923
vQ== 118 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1940
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1941
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1942
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1943
vw== 118 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1960
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1961
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1962
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1963
1964
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1965
echo $((7*12))
1966
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1967
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1968
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1969
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 193)
wQ== 119 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1980
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1981
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1982
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1983
1984
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1985
echo $((7*12))
1986
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1987
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1988
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
1989
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 195)
ww== 119 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2000
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2001
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2002
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2003
xQ== 120 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2020
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2021
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2022
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2023
xw== 120 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2040
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2041
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2042
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2043
2044
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2045
head -c 1 /dev/urandom
2046
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2047
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2048
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2049
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 201)
yQ== 121 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2060
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2061
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2062
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2063
2064
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2065
head -c 1 /dev/urandom
2066
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2067
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2068
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2069
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 203)
yw== 121 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2080
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2081
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2082
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2083
zQ== 122 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2100
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2101
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2102
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2103
zw== 122 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2120
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2121
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2122
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2123
0Q== 48 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2140
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2141
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2142
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2143
0w== 48 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2160
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2161
head -c 1 /dev/urandom
2162
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2163
2164
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2165
head -c 1 /dev/urandom
2166
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2167
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2168
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2169
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 213)
1Q== 49 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2180
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2181
head -c 1 /dev/urandom
2182
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2183
2184
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2185
head -c 1 /dev/urandom
2186
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2187
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2188
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2189
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 215)
1w== 49 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2200
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2201
printf '%d' "'`head -c 1 /dev/urandom | base64`"
2202
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2203
2Q== 50 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2220
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2221
printf '%d' "'`head -c 1 /dev/urandom | base64`"
2222
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2223
2w== 50 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2240
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2241
echo $((7*12))
2242
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2243
2244
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2245
echo $((7*12))
2246
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2247
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2248
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2249
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 221)
3Q== 51 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2260
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2261
echo $((7*12))
2262
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2263
2264
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2265
echo $((7*12))
2266
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2267
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2268
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2269
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 223)
3w== 51 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2280
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2281
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64`")%4))
2282
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2283
4Q== 52 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2300
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2301
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64`")%4))
2302
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2303
4w== 52 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2320
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2321
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2322
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2323
2324
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2325
head -c 1 /dev/urandom
2326
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2327
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2328
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2329
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 229)
5Q== 53 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2340
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2341
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2342
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2343
2344
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2345
head -c 1 /dev/urandom
2346
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2347
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2348
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2349
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 231)
5w== 53 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2360
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2361
#!/bin/bash

function random() {
    echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
}

ret=`i=0; time while [ $i -lt 100 ]; do random ; i=$((i+1)); done`

echo -n '0: ' ; echo "$ret" | grep 0 | wc -l
echo -n '1: ' ; echo "$ret" | grep 1 | wc -l
echo -n '2: ' ; echo "$ret" | grep 2 | wc -l
echo -n '3: ' ; echo "$ret" | grep 3 | wc -l
2362
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2363
6Q== 54 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2380
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2381
#!/bin/bash

function random() {
    echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
}

ret=`i=0; time while [ $i -lt 100 ]; do random ; i=$((i+1)); done`

echo -n '0: ' ; echo "$ret" | grep 0 | wc -l
echo -n '1: ' ; echo "$ret" | grep 1 | wc -l
echo -n '2: ' ; echo "$ret" | grep 2 | wc -l
echo -n '3: ' ; echo "$ret" | grep 3 | wc -l
2382
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2383
6w== 54 2
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2400
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2401Nice BASH Random Implementation2402
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2403
2404
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2405
echo $((7*12))
2406
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2407
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2408
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2409
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 237)
7Q== 55 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2420
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2421Nice BASH Random Implementation2422
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2423
2424
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2425
echo $((7*12))
2426
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2427
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2428
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2429
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 239)
7w== 55 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2440
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2441Comments: 62442
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2443
8Q== 56 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2460
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2461Comments: 62462
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2463
8w== 56 0
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2480
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2481

2482

echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
9Q== 57 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2500
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2501

2502

echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
9w== 57 1
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2520
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2521
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2522
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2523
2524
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2525
echo $((7*12))
2526
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2527
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2528
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2529
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 249)
+Q== 43 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2540
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2541
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2542
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2543
2544
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2545
echo $((7*12))
2546
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2547
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2548
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2549
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
(code 251)
+w== 43 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2560
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2561
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2562
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2563
/Q== 47 3
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2580
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2581
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2582
echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
2583
/w== 47 3

(Some of the symbols in the first column may appear not visible or otherwise look strange. This is normal, there are many characters in ASCII that has (or had) some special meaning.)

Let's count have many 0s, 1s, 2s and 3s did we get:

0 60
1 68
2 64
3 64

This is not ideal, because you get statistically slightly more 1s than 0s, but if you don't care too much, this is all!

If you care however, here is some solution. We need to get 4 results that give us 1 and convert them to some that gives 0:

echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))

Notice the tr A D. This changes each A to D in the base64 output. Thus four rows of table above (for 0 to 4 codes) should behave like the 12 to 15 codes, thus giving 0 at the end instead of 1.

We're done. Let's enclose the procedure in function clause and create a sample code that tells us how many 0s, 1s, 2s and 3s where hit within 100 shots.

#!/bin/bash

function random() {
    echo $(($(printf '%d' "'`head -c 1 /dev/urandom | base64 | tr A D`")%4))
}

ret=`i=0; time while [ $i -lt 100 ]; do random ; i=$((i+1)); done`

echo -n '0: ' ; echo "$ret" | grep 0 | wc -l
echo -n '1: ' ; echo "$ret" | grep 1 | wc -l
echo -n '2: ' ; echo "$ret" | grep 2 | wc -l
echo -n '3: ' ; echo "$ret" | grep 3 | wc -l

The program also shows how much time did it take to generate the numbers. Adjust the 100 to your needs ;).

UPDATE: having this article posted on reddit programming gave me actually much much better ways of doing a random function (see in comments). Thank you for your replies!

Comments: 6

Po Devcampie

26 Oct 2008 15:59

Zdecydowałem, że mój blog musi być bardziej pozytywny.

Zatem, po pierwsze: iPhone rządzi, bo ma basha.

Po drugie: devcamp rządził :]. Chłopaki z www.socjum.pl też są spoko i zapraszają do Krakowa na imprezę, jaką długo spamiętamy.

Po trzecie: z pomocą Zająca odpaliłem na moim lapie Compiza w konfiguracji Dual Head na karcie graficznej Intela (a jak wszyscy wiedzą mam dwie karty graficzne, w moim kompie).

Niedługo będzie o pisaniu aplikacji do facebooka. A teraz sobie wymyślam jak powinien wyglądać serwis opiwo.com (czy raczej jak działać), żeby każdego chwycił za serce i spowodował efekt ŁAŁ.

Szczegóły wkrótce.

PS: Jeszcze chciałem przeprosić, że przynudzałem tak długo o tym JSON-RPC. Jak ktoś chętny: oto prezentacja.

Comments: 1

page 2 of 2« previous12
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License