【发布时间】:2015-10-28 11:14:52
【问题描述】:
标题几乎说明了一切。我在网上查过,但我找不到这种语言的任何东西。我看过以下内容:
((double) rand() / (RAND_MAX)) 没有运气。我也想避免使用外部库。
当我计算 X,Y 坐标时,该值应该是一个浮点数。
【问题讨论】:
标题几乎说明了一切。我在网上查过,但我找不到这种语言的任何东西。我看过以下内容:
((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);
}
这是一个功能齐全的代码。 (不要忘记在 main 中使用 srand() 播种 rand!
注意>我不能把它归功于它,因为我在网上的某个地方也看到了它,而且我自己使用了一段时间。
【讨论】:
number = rand() 或类似的东西。