276
|
MatthewMartin muthu · 技术社区 · 15 年前 |
![]() |
1
431
看一看 SQL Server - Set based random numbers 这有一个非常详细的解释。 总而言之,以下代码生成一个介于0和13之间的随机数,包括一个标准化分布:
要更改范围,只需更改表达式末尾的数字。如果您需要同时包含正数和负数的范围,请格外小心。如果你做错了,可以把数字0加倍。
房间里数学迷的一个小警告:这个代码中有一个非常轻微的偏差。
例如,假设int类型的整个范围只有19。19是可以容纳的最大整数。当checksum()结果为14-19时,这些结果对应于结果0-5。这些数字是 沉重地 优于6-13,因为checksum()生成它们的可能性是前者的两倍。这很容易用视觉来演示。下面是我们假想整数范围的全部可能结果集: Checksum Integer: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Range Result: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 0 1 2 3 4 5 你可以在这里看到,产生一些数字的机会比其他数字更多:偏见。值得庆幸的是,int类型的实际范围是 许多的 更大的。。。如此之多以至于在大多数情况下,偏差几乎是不可检测的。但是,如果您发现自己这样做是为了认真的安全代码,那么应该注意这一点。 |
![]() |
2
87
当在一个批处理中多次调用时,rand()返回相同的数字。
我建议使用convert(
编辑后得到从1到14的随机整数。 |
![]() |
3
63
上面将生成一个介于0和1之间的(伪)随机数,不包括。如果在select中使用,因为每行的seed值都会发生变化,所以它将为每行生成一个新的随机数(但不保证每行生成一个唯一的数字)。 与10的上限(产生数字1-10)组合时的示例:
Transact-SQL文档:
|
![]() |
4
29
随机数生成介于1000和9999之间(含1000和9999):
“+1”-包括上限值(前一个示例为9999) |
![]() |
5
15
回答旧问题,但之前没有提供此答案,希望这对通过搜索引擎找到此结果的人有用。
在SQL Server 2008中,引入了一个新的函数,
因此,要得到一个随机数,只需调用函数并将其强制转换为必要的类型:
或者得到一个
|
![]() |
6
11
rand()函数将生成相同的随机数(如果在表选择查询中使用)。如果对rand函数使用seed,则同样适用。另一种方法是:
信息来源 here 这很好地解释了这个问题。 |
![]() |
7
5
您是否在每一行中都有一个整数值作为种子传递给rand函数? 为了得到1到14之间的整数,我相信这是可行的:
|
![]() |
8
5
如果需要保留种子以便每次生成“相同”的随机数据,可以执行以下操作: 1。创建返回select rand()的视图
2。创建从视图中选择值的UDF。
三。在选择数据之前,输入rand()函数,然后在select语句中使用udf。
|
![]() |
9
4
尝试在rand(seedint)中使用种子值。rand()对于每条语句只执行一次,这就是为什么每次看到相同的数字的原因。 |
![]() |
10
4
如果您不需要它是一个整数,而是任何随机唯一标识符,那么您可以使用
|
![]() |
11
4
|
![]() |
12
3
这里的随机数在20到30之间。
如果你想要负数,你可以用
则最小值为-60,最大值为-50。 |
![]() |
13
2
选择 newid() 或者可能是这个选择二进制校验和(newid()) |
![]() |
14
2
我有时对所选的“答案”有一个问题,那就是分布并不总是均匀的。如果您需要在许多行中随机分布1-14,那么您可以这样做(我的数据库有511个表,所以这是有效的)。如果行数少于随机数范围,则这不会很好地工作):
这种方法与正态随机解相反,即它保持数字的顺序,并随机化另一列。 记住,我的数据库中有511个表(这只与我们从信息模式中选择的B/C相关)。如果我接受上一个查询并将其放入临时表中,然后对结果数据运行此查询:
我得到了这个结果,显示我的随机数在许多行中非常均匀地分布:
|
![]() |
15
1
一直为我工作 |
![]() |
16
1
|
![]() |
17
1
这就像:
这将把0-99之间的随机数放入一个表中:
|
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |