【发布时间】:2017-08-04 16:10:50
【问题描述】:
我有这个代码:
public async Task ShowTimedCard()
{
phrase = phrases[(int)AS.rand.Next(phrases.Count)];
它获取一个随机数,然后从phrases 中选择一个短语,该短语是phrase 行的列表。该列表具有由后台进程添加和删除的项目。
每个短语都有一个Id 字段。由于其他原因,我无法从列表中删除我使用过的短语。
有时 ShowTimedCard 会连续两次选择相同的短语,因此我决定将 lastPhrase 信息存储在一个静态变量中,如下所示:
AS.phrase.id = phrase.id
如果phrases 列表中有超过 1 个项目,我该如何做到这一点,那么它不会连续两次选择相同的短语?我正在考虑某种 while 循环或 until 循环,但不知道如何实现它。我猜它需要将phrase.Id与AS.phrase.id进行比较
【问题讨论】:
-
从列表中删除使用的短语?
-
您要么需要从列表中删除使用过的短语,如@Equalsk 所说,要么检查所选短语是否已被使用。如果有,请选择另一个短语。
-
正如@Equalsk 所说,我想补充一下。使用您的短语的副本并从该副本中删除
-
另一种选择是按随机顺序对短语进行排序,然后循环遍历它们。
-
如果您不能连续两次选择相同的值,您正在寻找shuffle。
标签: c#