powershell - Powershell Get-Random cmdlet 的默认种子是什么

标签 powershell random

Powershell 的文档 Get-Random cmdlet 建议种子是系统滴答计数,但是,如果执行以下测试,$rand1 的值未在 for() 的输出中复制循环等似乎独立于 TickCount .为什么会这样?

# generate a random int32 - should automatically use the tickcount as seed?
$tick1 = ([Environment]::TickCount)
$rand1 = Get-Random
Write-Host $rand1
$tick2 = ([Environment]::TickCount)

# generate seeded randoms with all possible values used to generate $rand1
for ($i = $tick1; $i -le $tick2; $i++) {
    $rand2 = Get-Random -SetSeed $i
    Write-Host $rand2
}

最佳答案

Get-Random不一定在您使用它时直接播种(当然不是每次使用它时),它可以在进程启动时,也可以在您第一次在 session 中使用时。通常,PRNG 不应多次播种。

此外,正如 Mathias 在评论中指出的那样,它不一定使用 Environment.TickCount 的值。直接地。您可以使用 ILSpy 查看相关程序集的来源,以了解它是如何完成的。我不会为你做这件事,因为我是开源 PowerShell 实现的贡献者。

关于powershell - Powershell Get-Random cmdlet 的默认种子是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34331541/

相关文章:

user-interface - Powershell host.ui.prompt 从命令行运行时不弹出对话框

regex - 将 powershell 正则表达式捕获到表中

powershell - 在单词中为表格的特定单元格着色

powershell - 如何通过姓名或 SamAccountName 获取广告组成员

random - 关于sklearn中的mutual_info_classif,在特征选择方面对random_state的使用感到困惑

c# - 尝试使用 PowerShell 列出 Azure 文件服务中的共享时身份验证失败

javascript - 在 android studio 中将 JavaScript (UnityScript) 翻译为 Java 随机字符串生成

c# - 如何根据值从字典中随机删除键?

javascript - 弹出一个数组的随机字符串

c++ - 生成真正的随机数