我看了很多地方,似乎找不到答案。我知道 的概率rand() / RAND_MAX == 1很低,因为rand()不太可能等于RAND_MAX。
但是理论上可行吗?
我看到有人写类似的东西,范围是[0, 1),但我不明白为什么。
谢谢!
奇怪的是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容易溢出整数类型,这可能会产生未定义的结果。