0

在这个新的冒险中,我需要尽可能快地填充这个矩阵。所以在我看来,我需要对变量做的是:

for ($r = 0 ; $r -lt 5 ; $r++){
    new-variable r$r
    for ($i = 0 ; $i -lt 5 ; $i++){
    $rand = Get-Random -Minimum 0 -Maximum 50
    r$r += "$rand,"
    }
}

但它不起作用,它告诉我r0> 不是已知的 cmdlet。这应该创建 r0...r4 变量,这意味着 row0...row4 并且每个 rn 将填充一个随机数,后跟一个逗号。
怎么做?
而且......我真的不知道我是否以正确的方式做我的矩阵,但这就是我现在所拥有的:

$r1 = ""
        for ($i = 0 ; $i -lt 4 ; $i++){
        $rand = Get-Random -Minimum 0 -Maximum 50
        $r1 += "$rand,"
        }
    $r1 = $r1.Replace(" ",",")
    $r1 = $r1.TrimEnd(',')
#    Write-Host $r1

$r2 = ""
        for ($i = 0 ; $i -lt 4 ; $i++){
        $rand = Get-Random -Minimum 0 -Maximum 50
        $r2 += "$rand,"
        }
    $r2 = $r2.Replace(" ",",")
    $r2 = $r2.TrimEnd(',')
#    Write-Host $r2

$matrix = @(($r1),($r2))
foreach ($g in $matrix) {$g}
4

3 回答 3

1

仅仅因为你的其他问题,我已经建立了这个来输出矩阵块中的随机数。它使用$width$height来定义$theMatrix构建为字符串数组的数组的大小。

$width = 4
$height = 5

$theMatrix = @()
For($heightIndex = 1;$heightIndex -le $height;$heightIndex++){
    $theMatrix += ,@(1..$width | ForEach-Object{([string](Get-Random -Minimum 0 -Maximum 50)).PadLeft(2)})
}

$theMatrix | ForEach-Object{$_ -Join "|"}

这将建立一个随机数矩阵。我认为这对您来说在视觉上很重要,因此我将数字转换为字符串,以便PadLeft在遇到单个数字时可以使用以使输出看起来更清晰。最终用于$_ -Join "|"以可读形式显示矩阵。随意将分隔符更改为逗号或其他内容。

样本输出

 1|27|23|20
29|10|25|21
31|37| 9|27
11|36|34|48
43|42|35| 9
于 2014-12-23T16:28:24.117 回答
0

试试这种方式:

$r = 
 for ($i = 0 ; $i -lt 5 ; $i++){
  Get-Random -Minimum 0 -Maximum 50 
 }
于 2014-12-23T15:36:49.337 回答
0

只是为了踢球,因为我认为 Mjolinor 做到了。

这将创建一些名为 $r0 到 $r4 的动态变量,这些变量将包含随机整数数组。

for ($r = 0 ; $r -lt 5 ; $r++){
    new-variable r${r} -Value @()

    $myDynVariable = get-variable r${r}
    for ($i = 0 ; $i -lt 5 ; $i++){
        $rand = Get-Random -Minimum 0 -Maximum 50
        $myDynVariable.Value += $rand
    }
}

一些结果:

$r0
24
44
23
19
32

$r1
40
12
40
28
15

$r2
41
25
19
42
5

$r3
49
43
29
15
6

$r4
32
48
22
9
4
于 2014-12-23T15:58:40.470 回答