22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT FLOOR(RAND()*150)+50
这样不会取到200
生成区间随机数:
select cast((rand()*(@M-@N)+@N) as int)
select RAND()
/* 0.386438709040782 */
select RAND()*1000--这里乘1000 就是出来的数是白位数
/*497.731229818222*/
select CEILING(RAND()*1000)--ceiling 函数就是取整
/*742*/
select convert(decimal(7,2),CEILING(RAND()*1000))--用convert转换类型 确定精度用decimal(n,m)n表示有效数字的个数,M表示小数点后的位数
/*270.00*/
--或者
select convert(decimal(7,2),(RAND()*1000))
/*264.23*/
T-SQL中的随机数
1、0-9间的随机整数,包括0和9本身:
abs(checksum(newid()))%10
扩展从a-b间的随机整数(a,b本身也是整数):
a+abs(checksum(newid()))%(b-a+1)
2、0-1间的随机实数: rand()
--或是 rand(checksum(newid()))
由此扩展从a-b间的随机实数: a+rand(checksum(newid()))*(b-a)
注意上面的取法使得取值范围(a,b],若是想要取得(a,b),可以采用下面的表达式
a+rand(checksum(newid()))*(b-a)*0.99999 -- 此处0.99999可以更换为0.999999999,精度根据需要来取
SELECT FLOOR(RAND()*151)+50
select cast(rand()*150+50 as int)
---试这个
select ceiling((rand()*150+50))
select ceiling((rand()*2+1))