2次元配列がありますが、十字(上下左右に隣接していない)から2つまたは3つの乱数を取得するにはどうすればよいですか?
こんな感じで書いたのですが、非常に堅苦しい感じがして、得られる数値もばらつきがあり、コードも少し肥大化してしまいました。
认证0级讲师
上下左右が隣接していないことが条件です。始点座標を(0,0)とすると、(-1,0)、(0,-1)、(1,0)、(0,1)がマスクされます。これらの点の特性は、x の絶対値と y の絶対値を足したものが 1 に等しいということです。妥当な範囲内でランダムな x および y 座標値を計算し、それぞれの絶対値を加算します。それが 1 に等しくなく、この座標が以前に取得されていない場合は、正当です。
これは、ニーズを完全に満たす非常に単純なハックのアイデアです。つまり、[上下左右に隣接しない]という要件を達成するために、意図的に[断面で数字を取る]必要があるのは2つだけです。行数:
上下左右が隣接していないことが条件です。始点座標を(0,0)とすると、(-1,0)、(0,-1)、(1,0)、(0,1)がマスクされます。これらの点の特性は、x の絶対値と y の絶対値を足したものが 1 に等しいということです。妥当な範囲内でランダムな x および y 座標値を計算し、それぞれの絶対値を加算します。それが 1 に等しくなく、この座標が以前に取得されていない場合は、正当です。
これは、ニーズを完全に満たす非常に単純なハックのアイデアです。つまり、[上下左右に隣接しない]という要件を達成するために、意図的に[断面で数字を取る]必要があるのは2つだけです。行数:
リーリー