Um número de ponto flutuante IEEE-754 <1 (ou seja, gerado com um gerador de números aleatórios que gera um número> = 0,0 e <1,0) pode ser multiplicado por algum número inteiro (na forma de ponto flutuante) para obter um número igual ou maior que esse número inteiro devido ao arredondamento?
ie
double r = random() ; // generates a floating point number in [0, 1)
double n = some_int ;
if (n * r >= n) {
print 'Rounding Happened' ;
}
Isso pode ser equivalente a dizer que existe um N e R tal que, se R for o maior número menor que 1, que pode ser representado no IEEE-754, então N * R> = N (onde * e> = são apropriados IEEE- 754 operadores)
Isso vem desta pergunta com base nesta documentação e na função aleatória postgresql