c ++创建一个0.1到10之间的随机小数

tma*_*das 3 c++ random

我该怎么做?

这是我这样做的尝试:

srand (time(NULL));
seed = ((double)rand()) / ((double)RAND_MAX) * 10 + 0.5;
Run Code Online (Sandbox Code Playgroud)

另外,在0和某些int x之间创建一个随机整数的方法是什么.[0,x]中

Ada*_*dam 9

C++ 11方式:

#include <random>

std::random_device rd;
std::default_random_engine generator(rd()); // rd() provides a random seed
std::uniform_real_distribution<double> distribution(0.1,10);

double number = distribution(generator);
Run Code Online (Sandbox Code Playgroud)

如果您只想要整数,请使用此分布:

std::uniform_int_distribution<int> distribution(0, x);
Run Code Online (Sandbox Code Playgroud)

在这方面,C++ 11非常强大且设计精良.生成器与分布选择是分开的,范围被考虑在内,线程安全,性能良好,人们花了很多时间来确保它们都是正确的.最后一部分比你想象的更难做到.