【发布时间】:2017-10-22 23:37:28
【问题描述】:
我在此答案How to generate a random integer number from within a range 中找到了一个代码,该代码可以完美运行,但 tis 适用于整数。有人知道如何更改此代码,使其统一返回 0 到 1 之间的数字吗?
#include <stdlib.h> // For random(), RAND_MAX
// Assumes 0 <= max <= RAND_MAX
// Returns in the closed interval [0, max]
long random_at_most(long max) {
unsigned long
// max <= RAND_MAX < ULONG_MAX, so this is okay.
num_bins = (unsigned long) max + 1,
num_rand = (unsigned long) RAND_MAX + 1,
bin_size = num_rand / num_bins,
defect = num_rand % num_bins;
long x;
do {
x = random();
}
// This is carefully written not to overflow
while (num_rand - defect <= (unsigned long)x);
// Truncated division is intentional
return x/bin_size;
}
【问题讨论】:
-
尝试从 0-100(整数)随机化,然后将 1 除以答案。例如:返回 1/(randomizeNum)
-
什么意思?你想重写它以使用浮点吗?如果是这样,请发布您的尝试。如果不是,那么这个问题就没有意义了。