生成在所述范围内的随机数1 - 10(Generate a random number in t

2019-07-17 12:13发布

由于我对测试查询的做法,我曾在这个问题没有解决,我现在想别的东西。 有没有办法告诉皮克的random()函数来得到我的只有1到10之间的数字?

Answer 1:

如果通过在1和10之间的数字你指任何浮点数即> = 1和<10,则很容易:

select random() * 9 + 1

这可以很容易地进行测试:

# select min(i), max(i) from (
    select random() * 9 + 1 as i from generate_series(1,1000000)
) q;
       min       |       max
-----------------+------------------
 1.0000083274208 | 9.99999571684748
(1 row)

如果你想整数,是> = 1和<10,则很简单:

select trunc(random() * 9 + 1)

再次,简单的测试:

# select min(i), max(i) from (
    select trunc(random() * 9 + 1) as i from generate_series(1,1000000)
) q;
 min | max
-----+-----
   1 |   9
(1 row)


Answer 2:

总之,有点简化,你可以使用:

-- 0 - 9
select floor(random() * 10);
-- 0 - 10
SELECT floor(random() * (10 + 1));
-- 1 - 10
SELECT ceil(random() * 10);

你可以测试这个喜欢通过@ user80168提到

-- 0 - 9
SELECT min(i), max(i) FROM (SELECT floor(random() * 10) AS i FROM generate_series(0, 100000)) q;
-- 0 - 10
SELECT min(i), max(i) FROM (SELECT floor(random() * (10 + 1)) AS i FROM generate_series(0, 100000)) q;
-- 1 - 10
SELECT min(i), max(i) FROM (SELECT ceil(random() * 10) AS i FROM generate_series(0, 100000)) q;


Answer 3:

如果您正在使用SQL Server,然后正确的方式来获得整数

SELECT Cast(RAND()*(b-a)+a as int);

哪里

  • “b”为上限
  • “a”为下限


Answer 4:

(TRUNC(随机()* 10)%10)+ 1



Answer 5:

正确的版本hythlodayr的回答。

-- ERROR:  operator does not exist: double precision % integer
-- LINE 1: select (trunc(random() * 10) % 10) + 1

从输出trunc必须被转换到INTEGER 。 但是,它可以在不进行trunc 。 因此,原来简单。

select (random() * 9)::INTEGER + 1

地生成整数输出在范围[1,10]即两个1和10包括在内。

对于任何号码(花车),见user80168的答案。 即只是不将其转换为INTEGER



Answer 6:

其实我不知道你想这一点。

试试这个

INSERT INTO my_table (my_column)
SELECT
    (random() * 10) + 1
;


Answer 7:

此存储的过程中插入一个兰特数插入表中。 看出来,它插入不已的数字。 停止执行它,当u得到足够的编号。

创建游标中的表:

CREATE TABLE [dbo].[SearchIndex](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Cursor] [nvarchar](255) NULL) 

创建一个表来包含你的号码:

CREATE TABLE [dbo].[ID](
[IDN] [int] IDENTITY(1,1) NOT NULL,
[ID] [int] NULL)

插入脚本:

INSERT INTO [SearchIndex]([Cursor])  SELECT N'INSERT INTO ID  SELECT   FLOOR(rand() * 9 + 1)  SELECT COUNT (ID) FROM ID

创建和执行的过程:

CREATE PROCEDURE [dbo].[RandNumbers] AS
BEGIN
Declare  CURSE  CURSOR  FOR (SELECT  [Cursor] FROM [dbo].[SearchIndex]  WHERE [Cursor] IS NOT NULL)
DECLARE @RandNoSscript NVARCHAR (250)
OPEN CURSE
FETCH NEXT FROM CURSE
INTO @RandNoSscript 
WHILE @@FETCH_STATUS IS NOT NULL 
BEGIN
Print @RandNoSscript
EXEC SP_EXECUTESQL @RandNoSscript;  
 END
 END
GO

填写表格:

EXEC RandNumbers


文章来源: Generate a random number in the range 1 - 10