C++中-1和1之间的随机数生成器

Random number generator between -1 and 1 in C++

本文关键字:之间 随机数生成器 C++      更新时间:2023-10-16

标题几乎说明了一切。我在网上找过,但找不到任何关于这种语言的内容。我看到了以下内容:((double) rand() / (RAND_MAX))没有运气。我还想避免使用外部图书馆的。

当我计算X,Y坐标时,这个值应该是一个浮点值。

如果您使用的是C++11,则可以使用随机标头。您需要创建一个生成器,然后在此生成器上定义一个分布,然后您可以使用生成器和分布来获得结果。你需要包括随机

#include <random>

然后定义生成器和您的分发

std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(-1,1); //doubles from -1 to 1

然后你可以得到这样的随机数

double random_number = distribution(generator);

如果您需要更多信息,请点击此处http://www.cplusplus.com/reference/random/

可能是((double) rand() / (RAND_MAX)) * 2 - 1

不要简单地使用rand(),因为它不是随机的,只是伪随机的!
unsigned int rand_interval(unsigned int min, unsigned int max)
{
    int r;
    const unsigned int range = 1 + max - min;
    const unsigned int buckets = RAND_MAX / range;
    const unsigned int limit = buckets * range;
    /* Create equal size buckets all in a row, then fire randomly towards
     * the buckets until you land in one of them. All buckets are equally
     * likely. If you land off the end of the line of buckets, try again. */
    do
    {
        r = rand();
    } while (r >= limit);
    return min + (r / buckets);
}

这是一个功能齐全的代码。(别忘了用srand()为主种子rand!

注意>我不能相信它,因为我也在网上看到过它,我自己也用了一段时间了。