# 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)
-- 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;
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
9条答案
按热度按时间a2mppw5e1#
如果1到10之间的数字是指大于等于1且小于10的浮点数,那么很容易:
这可以很容易地测试:
如果你想要整数,即大于等于1且小于10,那么很简单:
再一次,简单的测试:
hjqgdpho2#
为了进行总结和简化,您可以用途:
您可以像@user80168所提到的那样对此进行测试
9bfwbjaz3#
如果您正在使用SQL Server,则获取整数正确方法是
在哪里
mnowg1ta4#
(截断(随机()* 10)% 10)+ 1
rks48beu5#
hythlodayr答案的正确版本。
trunc
的输出必须被转换成INTEGER
,但是不需要trunc
也能完成,所以很简单。生成范围为[1,10]的INTEGER输出,即同时包含1和10。
对于任何数字(浮点数),请参阅user80168的答案。即不要将其转换为
INTEGER
。3b6akqbq6#
其实我不知道你想这个。
试试这个
aiazj4mn7#
这个存储过程在表中插入一个随机数。注意,它插入了一个无穷的数字。当你得到足够的数字时,停止执行它。
为游标创建表:
执行
创建一个包含数字的表格:
插入脚本:
创建和执行程序:
填写表格:
ovfsdjhp8#
试试这个:
l7wslrjt9#
范例