iRon 的回答提供了一个优雅的解决方案。
让我通过分别解决第 1 点和第 2 点来补充它:
回复 1。
..
,范围运算符仅支持[int]
( System.Int32
) (数字)端点(顺便说一下,这同样适用于 LINQ 的Range
方法)。
您可以使用.ForEach()
数组方法来解决该问题,如 iRon 的回答中所示。
# Returns a collection of [long] (System.Int64) values.
(0..10000).ForEach({ 1400000000000000 + $_ })
回复 2。
PowerShell [Core] 现在支持允许您在指定范围内请求给定数量的随机数的参数-Count
。Get-Random
# PowerShell [Core] only
# Note that there's no point in specifying leading zeros (0001).
# The output will be an array of unformatted [int] (System.Int32) values
$10kRandomNums = Get-Random -Count 10000 -Minimum 1 -Maximum 9999
注意:-Maximum
值(与 不同-Minimum
)不包含在内;也就是能返回的最大随机数低 1 , 9998
.
在Windows PowerShell中,您必须Get-Random
循环调用:
# Windows PowerShell
$10kRandomNums = foreach ($i in 1..10000) { Get-Random -Minimum 1 -Maximum 9999 }
在循环中调用 cmdlet 很昂贵;System.Random
您可以通过直接使用 .NET 类来显着加快速度:
$rnd = [Random]::new()
$10kRandomNums = foreach ($i in 1..10000) { $rnd.Next(1, 9999) }