sqlserⅴer随机函数_SQL Server生成指定范围内的随机数

本文介绍了如何在SQL Server中使用RAND()和FLOOR()函数生成100到999之间的随机整数,包括详细的代码示例和逻辑解析。并通过一个WHILE循环展示如何生成直到出现100或999的随机数序列。
摘要由CSDN通过智能技术生成

标签:

在开发中很多时候,我们都会遇到这种需要生成一个指定范围随机数的情况。而且在很多语言中比如Java、C#、SQl等,都会有一个函数生成一个类似于0.234273983423789的随机小数,而所有的随机数都是通过这个最基本的随机数(0.234273983423789)变化过来的。

下面我说一下生成指定范围随机数的思路,比如我要生成一个100-999范围内的随机数,我就要保证我写的生成随机数的表达式所生成的值,最大是999,最小是100。还有就是要明白一个数学里的小道理,0.99去乘一个数字所得的结果约等于这个数但不等于这个数。什么意思呢?就是0.999*9000的结果肯定是等于8999.9999...的,一会儿用用到这个思想。

这里我再介绍两个函数,一会儿会用到。

floor():会返回一个小于等于当前数的最小整数 floor(2.5)=2

ceiling():和上个函数相反,会返回一个大于等于当前数的最大整数 ceiling(2.5)=3

最后看代码(随机生成一个100-999的随机数)

生成一个100-999的随机数,包括100和999

SELECT FLOOR(RAND()*900)+100

下面我们分析一下这段代码,首先从最里面开始,rand()会生成一个0.000000..到0.999999..的随机数,然后这个随机数乘以900以后 就会生成一个0到899...的随机数,最后在给它加上100,就会生成一个100到(899+100)的随机数也就是100到999的随机数

以下代码能输出所有的随机数,直到出现100或者999停止循环

1 declare @rand int

2 WHILE 1=1

3 BEGIN

4 SET @rand=FLOOR(RAND()*900)+100

5 PRINT @rand

6 IF @rand=100 or @rand=999

7 begin

8 break

9 end

10 end

如果有更好的方法大家可以评论私信!一起交流!

这里还有一种比较好的方法,但是不太好理解,大家可以记下来。

1 DECLARE @Result INT

2 DECLARE @Upper INT

3 DECLARE @Lower INT

4

5 SET @Lower = 1 --包括左边的数

6

7 SET @Upper = 11 --不包括右边的数

8

9 --[left,right)

10

11 SELECT @Result = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)12 SELECT @Result

作者联系方式:pxpdzpfzpp@163.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值