หมายเลขจุดลอยตัว IEEE-754 สามารถ <1 (เช่นสร้างด้วยตัวสร้างตัวเลขสุ่มซึ่งสร้างตัวเลข> = 0.0 และ <1.0) คูณด้วยจำนวนเต็มบางส่วน (ในรูปจุดลอยตัว) เพื่อให้ได้จำนวนเท่ากับหรือมากกว่า จำนวนเต็มนั้นเนื่องจากการปัดเศษ
กล่าวคือ
double r = random() ; // generates a floating point number in [0, 1)
double n = some_int ;
if (n * r >= n) {
print 'Rounding Happened' ;
}
นี่อาจเทียบเท่ากับการบอกว่ามี N และ R อยู่เช่นนั้นถ้า R เป็นจำนวนมากที่สุดน้อยกว่า 1 ซึ่งสามารถแสดงใน IEEE-754 ดังนั้น N * R> = N (โดยที่ * และ> = เหมาะสม IEEE- 754 ตัวดำเนินการ)
นี่มาจากคำถามนี้ตามเอกสารนี้และฟังก์ชั่นการสุ่ม postgresql