截断整数到特定的位数?

时间:2017-06-26 17:51:04

标签: sql postgresql integer truncate

我们想要一个给定任意大小的随机正整数的SQL(不是PL / pgSQL)函数,返回一个介于0和0之间的整数。 999999包括在内。返回值应尽可能保留参数的随机性。

1 个答案:

答案 0 :(得分:0)

在PostgresSQL中:

设置种子设置下次调用随机函数时的随机数:

setseed (arg)

此语句将生成[0:999999]范围内的数字

SELECT floor(random()*(999999-0+1))+10;

在Python中:

import random
def get_rand_int(arg)
    random.seed(arg)
    return random.randrange(0,100000)

使用随机

时需要注意的事项

" Mersenne Twister是现存最广泛测试的随机数发生器之一。但是,完全确定性,它不适用于所有目的,并且完全不适合加密目的。" https://docs.python.org/3/library/random.html?highlight=random#random.random

在SQL中:

这将使用[seed]作为种子值返回介于999999和0之间的整数。

SELECT FLOOR(RAND([seed])*(999999-0));