0

我是 MatLab 和一般编程的新手。我已经设置了以下问题:

4名选手参加比赛,每人以100分开始。

每个人随机扮演另一个玩家。

如果一名玩家获胜,他们将获得 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 回答