Sql server 在SQL Server中生成随机值
我试图生成一个随机返回存储过程 尝试了这么多不同的方法,然后找到了一个“干净的方法”来做我需要的 但是。。我正在运行一些模拟,0和1中的结果数远小于其他值。。这个数字有什么不公平的 这是我的代码:Sql server 在SQL Server中生成随机值,sql-server,azure-sql-database,random-seed,Sql Server,Azure Sql Database,Random Seed,我试图生成一个随机返回存储过程 尝试了这么多不同的方法,然后找到了一个“干净的方法”来做我需要的 但是。。我正在运行一些模拟,0和1中的结果数远小于其他值。。这个数字有什么不公平的 这是我的代码: DECLARE @val FLOAT SET @val = (SELECT ROUND(RAND(CHECKSUM(NEWID())), 1)) INSERT INTO randomtable (value) SELECT @val GO 1000000 结果如下: 如您所见,在0和1
DECLARE @val FLOAT
SET @val = (SELECT ROUND(RAND(CHECKSUM(NEWID())), 1))
INSERT INTO randomtable (value)
SELECT @val
GO 1000000
结果如下:
如您所见,在0和1中只有8800个结果,其他结果超过17000个
如何可靠地创建生成随机值的系统?您可以跳过random()
您可以跳过random():
定义“价值”。你想要一个整数,一个像varchar这样的字符串,还是一个小数,或者一个字符或者其他什么?值的范围是多少?如果不是数字,值的长度是多少?我想要一个浮点,范围是图像中指定的。。。0到1,使用0.1,0.2,0.3…
选择ABS(校验和(NewId())%11*.1
这是否回答了您的问题?使用建议副本中的答案,但使用11作为模块,然后乘以。1。结果:选择ABS(校验和(NewId())%11*.1
定义“值”。你想要一个整数,一个像varchar这样的字符串,还是一个小数,或者一个字符或者其他什么?值的范围是多少?如果不是数字,值的长度是多少?我想要一个浮点,范围是图像中指定的。。。0到1,使用0.1,0.2,0.3…选择ABS(校验和(NewId())%11*.1
这是否回答了您的问题?使用建议副本中的答案,但使用11作为模块,然后乘以。1。结果:SELECT ABS(CHECKSUM(NewId())%11*.1
在数学上已经+1了,但是,你真的应该有一个前n。您可能正在创建数百万条不必要的记录。看起来很棒!我用这种方式。非常感谢你!在数学上已经+1了,但是,你真的应该有一个前n。您可能正在创建数百万条不必要的记录。看起来很棒!我用这种方式。非常感谢你!
select randomcol, count(*) as counter
from
(
select cast(ABS(CHECKSUM(NEWID())) % 11 /10.0 as decimal(2, 1)) as randomcol
from master.dbo.spt_values as a
cross join master.dbo.spt_values as b
) as a
group by randomcol
order by randomcol;