当所需的形状从其他变量派生时,创建一个带有随机数的矩阵

Create a matrix with random numbers when required shape is derived from other variables

当所需的形状从其他变量导出时,我想用 J 编程语言创建一个包含随机数的矩阵。

如果我使用文字整数指定其形状,我可以用 ? 3 5 $ 0 创建这样的矩阵。但是当形状为 # y# x 而不是上面示例中所示的 3 和 5 时,我正在努力寻找一种方法来创建这样的矩阵。

我试过? 0 $~ # y, # x但没用。

我想我需要一些方法来应用 # 变量列表和 return 应该放在 $~ 之后的数字列表,有点像 map 其他语言的功能。有办法吗?

我认为 ?@:$ 是您要找的东西

   3 5 ?@:$ 0
0.031974   0.272734    0.792653   0.439747  0.136448
0.332198   0.00904103  0.7896     0.78304   0.682833
0.27289    0.855249    0.0922516  0.185466  0.257876

一般结构是 x u@:v y <-> (u (x v y)),其中 u 和 v 是动词,参数是 x 和 y。

希望这对您有所帮助。

重新阅读您的问题,您似乎希望形状基于参数中的项目数。在这里,我将使用 # 来计算每个参数中的项目,然后使用 ,$&0 创建左侧参数并将 ? 应用于结果。

   3 4 5  (?@:($&0 @:,))&#  5 3 3 4 5
0.179395  0.456545  0.805514  0.471521  0.0967092
0.942029  0.30713   0.228288  0.693909  0.338689
0.632752  0.618275  0.100224  0.959804  0.517927

这是否更接近您的想法?

通常情况下,我一夜之间想到了另一种方法

   3 4 5 ?@0:"0/ 1 2 3 4 5
 0.271366   0.291846  0.0493541  0.72488   0.47988
 0.50287    0.980205  0.58541    0.778901  0.0755205
 0.0114588  0.523955  0.535905   0.5333    0.984908