在PowerShell中从一定范围内生成随机数,但要排除1。

3

我希望能够从一个范围内(比如说1到3)生成一个随机数,但需要排除变量X中指定的数字。

所以我有了下面这段代码:

get-random -inputobject (1..4) | where {$_ -notin $X}

这确实会生成一个1到3之间的随机数,但当生成的数字等于X中的数字时,它不返回任何值。

当发生这种情况时,我该如何强制它再次运行,以便无论尝试多少次都能得到一个数字?


2
do..while可以帮助你实现这一点,另外,-notin并不是你想象中的那样。即使从逻辑上思考(而非PowerShell语法),你也在寻找不等于运算符。 - 4c74356b41
1
你的意思是在 $generatednumber 不等于 $X 时执行 do...while 循环吗? - tnufa
1个回答

10

一种选择是在调用 Get-Random 之前删除您想要排除的项目:

$InputRange = 1..10
$Exclude = 3,4,5

$RandomRange = $InputRange | Where-Object { $Exclude -notcontains $_ }

Get-Random -InputObject $RandomRange

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接