在 SQL 服务器中生成随机值
Generating random values in SQL Server
我试图生成一个随机的-return存储过程。
尝试了很多不同的方法,然后找到了一个"Clean way"来做我需要的..
但是..我是运行一些模拟,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():
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;
我试图生成一个随机的-return存储过程。
尝试了很多不同的方法,然后找到了一个"Clean way"来做我需要的..
但是..我是运行一些模拟,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():
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;