J如何制作随机数的形状

Sol*_*nny 3 list j

在这种情况下,我正在尝试制作一个随机数字形状(0或1),因为我正在尝试创建一个扫雷场.

我试过用"?" 随机接收它的符号,但它通常变成一个非随机的,重复的模式,这对我来说是不能令人满意的:

5 5 $ ? 0 1

0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
Run Code Online (Sandbox Code Playgroud)

因此,我尝试了其他方法,例如从索引中提取数字(这称为roll).但是这会返回随机小数.对代码的其他小改动也导致这些随机小数.

bob*_*bob 7

我自己做了几次这样的事.关键是你申请时?.如果在创建矩阵后应用它,则会得到所需的结果.

我们知道?2返回a 10随机生成的值.

   ? 2
0
   ? 2
1
   ? 2
0
Run Code Online (Sandbox Code Playgroud)

所以,如果我们创建的5x5矩阵2

   5 5 $ 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
Run Code Online (Sandbox Code Playgroud)

然后我们在矩阵中应用?每个2随机10每个位置.

   ? 5 5 $ 2 NB. first 5 X 5 matrix of random 1's and 0's
0 0 0 1 1
1 1 1 0 1
0 0 0 0 1
1 1 1 1 0
1 1 1 0 0

   ? 5 5 $ 2  NB. different 5 X 5 matrix of random 1's and 0's
0 0 0 1 1
1 0 1 1 0
0 0 0 1 1
1 0 0 1 0
1 1 1 0 0
Run Code Online (Sandbox Code Playgroud)

  • 对于`x?@ $ y`,还有特殊的,更快的代码,尤其是当`y = 2`时. (2认同)