Random things with Get-Random
Today's post is less about anything in particular than it is about jotting a few things down for personal reference.
I learned a couple of things over the last week while developing a tool. I'm sure I learned them once before, but as a person with finite storage and recall capacity, this tidbits were replaced by something I perceived to be of more timely import at the time (such as my kids' birthday gifts, picking up a suit at the cleaners, a really great Detroit style pizza recipe I've finally put the finishing touches on, and how I've recently become a fan of grass-fed butter (well, technically butter made from milk produced by grass-fed cows, since you can't really get butter to eat anything successfully)).
So, without further ramblings ...
Using Get-Random with an array input object
Since I haven't found a great PowerShell-only tool to generate Lorem Ipsum text (yes, I'm aware of the module in the PowerShell gallery, but found it lacked some of the finesse that I wanted), I decided to create one (the creation of necessity for another tool I'm working on). So, here's a simplified snippet of how I used Get-Random with a word list to create a string of text:
PS> $LoremIpsumText = @('lorem','ipsum','dolor','set','amit','do','preactus','coloron','duchartes','rampunct','finialis','rufrum')
PS> ((1..10) | % { Get-Random -InputObject $LoremIpsumText }) -join " "
lorem set ipsum preactus do ipsum do dolor set dolor
Pretty nifty. If you didn't follow along:
- (1..10) - A short-hand way to run a loop n number of times, incrementing by 1 each pass
- Get-Random -InputObject $LoremIpsumText - Instead of using -MininumValue and -MaximumValue or -SetSeed parameters for integer results, we can tell the cmdlet to use the values stored in $LoremIpsumText to be used a pool of values from which to pull
- -join " " - Let's just join them together with a space character
Using Get-Random to select a boolean value
Then, I wanted to find a way to select randomly between True and False. So, I tried a few things, and landed on this:
Get-Random -InputObject ([bool]$True,[bool]$False)
You can, of course, capture the result to a variable, which means you've now created a random(ish) boolean value.
Making a coin-flipper
Of course, now that you know you can use PowerShell to create a random(ish) True/False generator, you're probably dying for ways to apply this in your daily life.
I know I was.
So, have no fear, I've got a quick little way for you to now run a function to call heads or tails. Call it your own two-face app.
function CoinFlip
{
$Result = Get-Random -InputObject @([bool]$True, [bool]$False)
switch ($Result)
{
True { "Heads" }
False {"Tails" }
}
}
Whenever you need to choose between two restaurants, you can now pause the decision-making process, pull out your trusty CoinFlip function and leave the decision to fate and the will of Jeffrey Snover.
Or tacos. Always tacos.