如何在C++中生成0到1之间均匀分布的随机双精度?
当然我可以想到一些答案,但我想知道标准做法是什么,有:
(速度比我的应用程序的随机性更重要).
非常感谢!
PS:如果重要,我的目标平台是Linux和Windows.
我们有一个StreamBuffer课程,我们没有实施std::fixed操作,我试图阻止数字出现在科学记数法中.用我的下面的代码,一些数字以科学记数显示.我们希望避免进行任何分配,这就是我们StreamBuffer因为性能原因而实现类的原因.
以下是代码:
T value = 0;
template<typename U> void process(U& buf, DataOption holder) const {
if (holder == DataOption::TYPES) {
switch (type_) {
case teck::PROC_FLOAT:
buf << "{\"float\":" << value << "}";
break;
case teck::PROC_DOUBLE:
buf << "{\"double\":" << value << "}";
break;
default:
buf << "{\"" << type_ << "\":" << value << "}";
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是它被调用的方式:
void HolderProcess::dump(std::ostream& os, DataOption holder) const
{
process<std::ostream>(os, holder);
}
void HolderProcess::dump(StreamBuffer& buffer, DataOption holder) …Run Code Online (Sandbox Code Playgroud)