相关疑难解决方法(0)

从Linq到Sql的随机行

当我有条件时,使用Linq to SQL检索随机行的最佳(和最快)方法是什么,例如某些字段必须为true?

.net c# linq-to-sql

110
推荐指数
5
解决办法
6万
查看次数

当一些卡片无法使用时,从牌组中挑选随机卡的最有效方法是什么?

我有一个数组,告诉你卡是否正在使用:

int used[52];
Run Code Online (Sandbox Code Playgroud)

如果我有很多二手卡,这是一种挑选随机卡的可怕方法:

do {
  card = rand() % 52;
} while (used[card]);
Run Code Online (Sandbox Code Playgroud)

因为如果我只有3-4张未使用的卡片,那么找到它们需要永远.

我想出了这个:

 int card;
 int k = 0;
 int numUsed = 0;
 for (k=0; k < 52; ++k) {
   if (used[k]) numUsed += 1;
 }
 if (numUsed == 52) return -1;
 card = rand() % (52 - numUsed);

 for (k=0; k < 52; ++k) {
   if (used[k]) continue;
   if (card == 0) return k;
   card -= 1;
 }
Run Code Online (Sandbox Code Playgroud)

我觉得如果甲板已满,效果会更好,但是当甲板是空的时候会更糟,因为我必须通过两个for循环.

最有效的方法是什么?

random algorithm math probability

3
推荐指数
3
解决办法
3125
查看次数

标签 统计

.net ×1

algorithm ×1

c# ×1

linq-to-sql ×1

math ×1

probability ×1

random ×1