当我有条件时,使用Linq to SQL检索随机行的最佳(和最快)方法是什么,例如某些字段必须为true?
我有一个数组,告诉你卡是否正在使用:
int used[52];
如果我有很多二手卡,这是一种挑选随机卡的可怕方法:
do {
  card = rand() % 52;
} while (used[card]);
因为如果我只有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;
 }
我觉得如果甲板已满,效果会更好,但是当甲板是空的时候会更糟,因为我必须通过两个for循环.
最有效的方法是什么?