我希望能够从一个范围内(比如说1到3)生成一个随机数,但需要排除变量X中指定的数字。
所以我有了下面这段代码:
get-random -inputobject (1..4) | where {$_ -notin $X}
这确实会生成一个1到3之间的随机数,但当生成的数字等于X中的数字时,它不返回任何值。
当发生这种情况时,我该如何强制它再次运行,以便无论尝试多少次都能得到一个数字?
我希望能够从一个范围内(比如说1到3)生成一个随机数,但需要排除变量X中指定的数字。
所以我有了下面这段代码:
get-random -inputobject (1..4) | where {$_ -notin $X}
这确实会生成一个1到3之间的随机数,但当生成的数字等于X中的数字时,它不返回任何值。
当发生这种情况时,我该如何强制它再次运行,以便无论尝试多少次都能得到一个数字?
一种选择是在调用 Get-Random
之前删除您想要排除的项目:
$InputRange = 1..10
$Exclude = 3,4,5
$RandomRange = $InputRange | Where-Object { $Exclude -notcontains $_ }
Get-Random -InputObject $RandomRange
do..while
可以帮助你实现这一点,另外,-notin
并不是你想象中的那样。即使从逻辑上思考(而非PowerShell语法),你也在寻找不等于运算符。 - 4c74356b41