很快就想问RAND()运算符是否以相同的数字分配值?例如如果我在一个表中有100行和一个名为NumberOfItems的列,并且我想将值1-10分配给它们,使得它在100条记录之间平均分配(10条记录将具有1,10条将具有2条.... ..)
我的陈述是:
select CAST(RAND(CHECKSUM(NEWID())) * 10 as INT)+1
答案 0 :(得分:2)
否 - 概率分布应该是统一的,这意味着你有0.2的概率为0.5,但没有保证指定的“随机”集合数字将是统一的。
答案 1 :(得分:-1)
我这里没有SQL Server来测试,但这可能对你有用。
SELECT
((ROW_NUMBER() OVER(ORDER BY T1.rand_col)) % 10) + 1 as value_col,
T1.col1,
T1.col2,
T1.col3
FROM (
SELECT col1,
col2,
col3,
RAND(CHECKSUM(NEWID())) as rand_col
FROM your_table
) T1
ORDER BY T1.rand_col
它的作用是:
your_table
),附加了一个随机列rand_col
ORDER BY T1.rand_col
ROW_NUMBER() OVER(ORDER BY T1.rand_col)
% 10
一些参考