SQL Server生成指定范围内的随机数

在开发中很多时候,我们都会遇到这种需要生成一个指定范围随机数的情况。而且在很多语言中比如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

作者联系方式:[email protected]

如有转发 请务必标明原文地址 谢谢!

时间: 2024-12-21 00:08:07

SQL Server生成指定范围内的随机数的相关文章

随机生成指定范围内的随机数,放在指定长度的数组内

在群里遇到有人提出一道题:1.创建一个长度为5的空数组arr. 2.生成一个[2,32]之间的随机整数rand. 3.把随机整数插入到arr内,如果arr内已存在与rand相同的数,则重新生成随机整数并插入(需要使用递归实现,不能使用for/while等循环). 4.最后输出一个长度为5,且内容不重复的数组arr. 首先:生成指定范围的随机整数的公式: Math.floor(Math.random()*(max-min+1)+min); 之后看完整的方法: var arr = new Array

SQL语句生成指定范围内随机数

1.生成随机实型数据 create procedure awf_RandDouble @min dec(14,2), @max dec(14,2), @result dec(14,2) output as begin set @result= cast((rand()*(@[email protected])[email protected]) as dec(14,2)) return @result end 2.生成随机整型数据 create procedure awf_RandInt @mi

java生成指定范围内的随机数

我们经常说Java中的随机数是伪随机数,那么我们要知道什么是伪随机数. 什么是伪随机数? 1.真正意义上的随机数在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的.这才是真随机. 2.计算机中的随机函数是按照确定算法模拟产生的,其结果是确定的,是可见的,我们可以这样认为这个可预见的结果其出现的概率是100%,所以被称为伪随机. Java随机数产生原理:    Java的随机数产生用了线性同余公式等,也就是说通过一个复杂的算法生成的.如果感兴趣,可以去看一下这

shell生成指定范围内的随机数

#!/bin/bash read -p "请输入起始数:" min read -p "请输入终止数:" max if [ $min -gt $max ] then echo "起始数大于终止数!" else echo -n "随机数:" ;expr $(date +%N) % $[$max - $min + 1] + $min #日期函数生成随机数向最大值和最小值的差加1后取余得到一个随机数,然后加上最小值保证能取到的最小值和

js中Math.random()生成指定范围数值的随机数

http://www.111cn.net/wy/js-ajax/57062.htm Math.random() 这个方法相信大家都知道,是用来生成随机数的.不过一般的参考手册时却没有说明如何用这个方法来生成指定范围内的随机数.这次我就来详细的介绍一下Math.random(),以及如何用它来生成制定范围内的随机数.w3school的random()教程定义和用法 random() 方法可返回介于 0 ~ 1 之间的一个随机数.语法 Math.random() 返回值 0.0 ~ 1.0 之间的一

生成指定范围的一组随机数并求平均值

Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值,是Java语言常用代码. 随机数生成20~90之间的数值,并求平均数: public class Random01 { public static void main(String[] args) { int len = 5; int sum = 0; int[] arr = new int[len]; for (int i = 0; i < len; i++) { arr[i] = (int

js生成某个范围内的随机数

根据random方法,Math.random()方法返回的是0到1的随机数(不包含0和1): ? 1 2 3 4 5 6 7 8 //生成k个m到n的随机数,返回数组     function Temp(m,n,k) {         var all = new Array();         for (var i = 0; i < k; i++) {             all[i] = Math.floor(Math.random()*(n-m) + m); //Math.floor

SQL Server获取指定行的数据

SQL Server获取指定行(如第二行)的数据 --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , number = row_number() over(order by Grade desc) from Students )  m where number = 2 --法二(排除法)--- select top 1 * from Students where Grade not in ( select top

java的random生成某个范围内的随机数

import java.util.Random; /** * @author HP * @date 2019/4/16 */ public class randomTest { public static void main(String[] args) { Random random = new Random(); //生成64-128内的随机数 int i = random.nextInt() * (128 - 64 + 1) + 64; /** * 生成 [m,n] 的数字 * int i