0

私はMatLabとプログラミング全般に不慣れです。次の問題を設定しました。

4 人のプレーヤーが競技に参加し、各人は 100 ポイントから始まります。

各人は別のプレイヤーをランダムにプレイします。

プレイヤーが勝った場合、そのプレイヤーは 1 ポイントを獲得し、負けたプレイヤーは合計から 1 ポイントを失います。

プレイヤーがゼロポイントを持っている場合、彼らは排除されます。

プレイヤーが1人になった時点でゲームオーバーです。

4 人のプレーヤーとその 4 つのスコアを使用して、ある種の行列配列を作成する必要があると思います

A = [1 2 3 4; 100 100 100 100]

これは正しいですか、プレーヤーとそのスコアがゼロになったら、どのように削除しますか?

どんな助けでも大歓迎です。ありがとう

4

3 に答える 3

1

A をそのように定義すると仮定すると、正でないスコアを持つプレーヤーをそのように削除できます。

A = [1 2 3 4; 100 100 0 100]
idx = A(2,:)<0.01 %To prevent suffering from rounding errors
A = A(:,~idx)
于 2013-02-15T10:04:28.180 に答える
0

この答えを自分で探しているときに、このページに出くわしました(私はMatlabも初めてです)。ただし、上記の答えは複雑すぎるようです。少し実験してわかったように、Matlab の行列アドレス指定演算子と代入演算子は、この問題を非常に簡単に解決します。

A = [1 2 3 4; 100 0 100 100]

A = 1 2 3 4

100 0 100 100

A(:,A(2,:)==0)=[]

A = 1 3 4

100 100 100

これが誰かに役立つことを願っています。

于 2014-10-13T07:16:04.413 に答える
-1

最初の答えは絶対に正しいです。ただし、この問題に対処するために、この目的のために作成された簡単な構文があり、これを使用sparseすると、0 ポイントのプレーヤーを直接抽出することもできます。

A = [1 2 3 4; 100 100 0 100]
ans= sparse (A(2,:))

幸運を ;)

于 2013-02-15T12:53:36.950 に答える