rand() / RAND_MAX 是否返回 [0, 1) 或 [0,1]?

dng*_*dng 3 c random

我看了很多地方,似乎找不到答案。我知道 的概率rand() / RAND_MAX == 1很低,因为rand()不太可能等于RAND_MAX
但是理论上可行吗?
我看到有人写类似的东西,范围是[0, 1),但我不明白为什么。

谢谢!

Bat*_*eba 5

奇怪的是rand() / RAND_MAX绘制0或1由于效应整数除法

你的意思是1.0 * rand() / RAND_MAX?那可以画0和1;原因rand()是允许返回RAND_MAX

这是一种不寻常的拥有事物的方式。通常你不想画 1,所以你经常会看到

rand() / (RAND_MAX + 1.0)
Run Code Online (Sandbox Code Playgroud)

反而。请注意,这会1.0强制分母采用浮点类型,因此分子也将被提升。就其本身而言,RAND_MAX + 1容易溢出整数类型,这可能会产生未定义的结果。