20 个解决方案
#1
SELECT ABS(CHECKSUM(NEWID())) % 150 + 50
#2
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*/
#3
生成区间随机数:
select cast((rand()*(@M-@N)+@N) as int)
#4
SELECT FLOOR(RAND()*150)+50
这样不会取到200
#5
貌似 如果是 随机 1~3 永远随机不到3
#6
是啊 要求 50~200之间 包括 50 和 200 应该怎样写呢?
#7
这个我好像见过。。
#8
select ceiling((rand()*2+1))
#9
这个就是你写的 我抄袭的 你个呆子
#10
---试这个
select ceiling((rand()*150+50))
#11
[50,200]
SELECT ABS(CHECKSUM(NEWID())) % 151 + 50
SELECT ABS(CHECKSUM(NEWID())) % 151 + 50
#12
这样总是取不到边界值的,取不到50
#13
select cast(rand()*150+50 as int)
#14
SELECT FLOOR(RAND()*151)+50
思维限制了,哎,学习
#15
能取到 50?
#16
晕,当然啦,难道没有能够除以151的?
#17
可以
#18
呵呵,看错了,是在里面加的
#19
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,精度根据需要来取
#20
学习了!
#21
#1
SELECT ABS(CHECKSUM(NEWID())) % 150 + 50
#2
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*/
#3
生成区间随机数:
select cast((rand()*(@M-@N)+@N) as int)
#4
SELECT FLOOR(RAND()*150)+50
这样不会取到200
#5
貌似 如果是 随机 1~3 永远随机不到3
#6
是啊 要求 50~200之间 包括 50 和 200 应该怎样写呢?
#7
这个我好像见过。。
#8
select ceiling((rand()*2+1))
#9
这个就是你写的 我抄袭的 你个呆子
#10
---试这个
select ceiling((rand()*150+50))
#11
[50,200]
SELECT ABS(CHECKSUM(NEWID())) % 151 + 50
SELECT ABS(CHECKSUM(NEWID())) % 151 + 50
#12
这样总是取不到边界值的,取不到50
#13
select cast(rand()*150+50 as int)
#14
SELECT FLOOR(RAND()*151)+50
思维限制了,哎,学习
#15
能取到 50?
#16
晕,当然啦,难道没有能够除以151的?
#17
可以
#18
呵呵,看错了,是在里面加的
#19
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,精度根据需要来取
#20
学习了!