I’d like to generate a pseudo-random string that is derived from English words, as opposed to just a sequence of random characters. It doesn’t need to be guaranteed unique, just “random enough”.
I’ve written an output macro that does this using ^pick(~adjectivelist), ^pick(~nounlist), and %rand, which produces strings like the following:
Kneeling-teflon-65
Similar-edibility-7
Obligatory-mileage-31
This is exactly what I’m looking for, but I’ve noticed that ^pick() is returning the same words a lot of the time, despite using very large concepts as the input (adjectives and nouns).
When I ran the output macro 50-odd times, the adjectives “criminal”, “similar”, and “snowy” showed up in almost half of the outputs.
Criminal-spell-51 <-- Criminal
Similar-force-8 <-- Similar
Mild-milk-50
Similar-week-50 <-- Similar
Severe-size-50
Visible-erosion-72
Criminal-fluid-72 <-- Criminal
Snowy-width-96 <-- Snowy
Quick-freeze-92
Obligatory-mileage-31
Dizzy-mileage-31
Charming-plasma-82
Criminal-erosion-5 <-- Criminal
Similar-edibility-7 <-- Similar
Heavy-sexennial-28
Beautiful-force-73
Silky-hot-25
Snowy-minute-95 <-- Snowy
Past-hexing-44
Catholic-polypropylene-3
Criminal-hexing-44 <-- Criminal
Similar-chill-26 <-- Similar
Heavy-diurnal-58
Obligatory-flame-64
Soft-hypergiant-62
Snowy-charm-97 <-- Snowy
Current-twinight-62
Similar-twinight-62 <-- Similar
Severe-health-62
Materialistic-draft-5
Criminal-grill-5 <-- Criminal
Snowy-color-5 <-- Snowy
Rapid-plague-90
Rational-morning-72
Kneeling-teflon-65
Capable-erosion-65
Undersized-height-83
Snowy-spring-47 <-- Snowy
Past-erosion-47
Resourceful-clientele-80
Criminal-erosion-47 <-- Criminal
Similar-clientele-80 <-- Similar
Outright-spark-10
Snowy-ulcer-51 <-- Snowy
Impulsive-force-80
Difficult-liquid-42
Enabled-reputation-19
Similar-hour-19 <-- Similar
Severe-reputation-19
Invisible-snorkeler-10
Criminal-draft-1 <-- Criminal
Similar-second-10 <-- Similar
My output macro is as follows:
outputmacro: ^humanReadableRandomName()
$$_adjective = ^pick(~adjectivelist)
$$_noun = ^pick(~nounlist)
$$_num = %rand
$$_result = ^eval($$_adjective $$_noun $$_num)
$$_result = ^removeSpaces($$_result)
$$_result = ^removeUnderscores($$_result)
$$_result = ^pos(LOWERCASE $$_result)
$$_result