相关疑难解决方法(0)

如何在SQL中请求随机行?

如何在纯SQL中请求随机行(或尽可能接近真正随机)?

sql random

496
推荐指数
6
解决办法
42万
查看次数

linq:随机排序

如何更改以下代码,每次从数据库中获取50个不同的随机数据?

return (from examQ in idb.Exam_Question_Int_Tbl
      where examQ.Exam_Tbl_ID==exam_id
      select examQ).OrderBy(x=>x.Exam_Tbl_ID).Take(50);
Run Code Online (Sandbox Code Playgroud)

c# linq random

59
推荐指数
3
解决办法
5万
查看次数

如何从符合O(1)中某个条件的数组中选择一个随机元素

我有一个从数据库中获得的食谱列表,如下所示:

List<RecipeNode> _recipeList;
Run Code Online (Sandbox Code Playgroud)

RecipeNode除其他外,有一个属性引用一个或多个标签(如晚餐,早餐,,素食,假日,和其他约60个).

   public sealed class RecipeNode
   {
      public Guid RecipeId;
      public Byte[] Tags; //Tags such as 1, 5, 6, 8, 43
      //... More stuff
   }
Run Code Online (Sandbox Code Playgroud)

_recipeListO(1)中查找随机配方当然很容易,但我需要做的是找到一个随机配方,例如Tags在O(1)中有5个.

现在,我唯一的想法是制作一个List<RecipeNodes>由标签键入的数组.例如:

List<RecipeNode>[] _recipeListByTag;
Run Code Online (Sandbox Code Playgroud)

然后,_recipeListByTag[5]将包含Tags数组中具有5的所有配方的列表.然后,我可以在O(1)中的该标签内选择随机允许的标签和随机配方.

这种方法的缺点是这个多维数组的大小Recipes * Tags(例如,所有配方中的Tags.length的总和),由于我在这里存储了大量的食谱,因此开始占用大量的内存.阵列.当然,既然RecipeNode是一个引用类型,我只重复4byte指向配方的指针,所以这仍然是最好的方法.

是否有更高效的数据结构或算法可以让我找到包含某个允许标签的随机配方?谢谢!

c# algorithm data-structures

8
推荐指数
1
解决办法
626
查看次数

在MS SQL Server 2005中使用RAND()时我做错了什么?

我正试图从一张小桌子中随机抽取10%的样本.我以为我只是使用RAND()函数并选择随机数小于0.10的那些行:

SELECT * FROM SomeTable
WHERE SomeColumn='SomeCondition' AND
      RAND() < 0.10
Run Code Online (Sandbox Code Playgroud)

但我很快发现RAND()总是返回相同的数字!让我想起这个xkcd卡通片.

没问题,RAND函数采用种子值.我将定期运行此查询,如果我在不同的日子运行它,我希望它给出不同的结果,所以我使用日期和唯一行ID的组合来播种它:

SELECT * FROM SomeTable
WHERE SomeColumn='SomeCondition' AND
      RAND(CAST(GETDATE) AS INTEGER) + RowID) < 0.10
Run Code Online (Sandbox Code Playgroud)

我还是没有得到任何结果!当我显示RAND返回的随机数时,我发现它们都在一个狭窄的范围内.从RAND获取随机数似乎需要您使用随机种子.如果我首先有一个随机种子,我就不需要随机数!

我已经看到之前有关此问题的讨论:

SQL Server随机排序
如何在SQL中请求随机行?

他们没帮我.TABLESAMPLE在页面级别工作,这适用于大表,但不适用于小表,并且看起来它适用于WHERE子句之前.TOP with NEWID不起作用,因为我不知道我想要多少行.

任何人都有解决方案,或者至少有一个提示?

编辑:感谢AlexCuse提供适用于我的特定案例的解决方案.现在更大的问题,如何使兰德表现?

sql sql-server random

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

标签 统计

random ×3

c# ×2

sql ×2

algorithm ×1

data-structures ×1

linq ×1

sql-server ×1