【发布时间】:2020-12-20 20:35:25
【问题描述】:
我有这个看起来像这样的随机浮点函数:
float randomFloat(float input)
{
std::mt19937 mt;
mt.seed(input);
std::uniform_real_distribution<float> dt(-1,1);
return dt(mt);
}
如您所见,该函数接受输入并返回介于 -1 和 1 之间的输出
但我的问题是,当我给出输入浮点数时,如果点左侧的数字相同。示例:(1.2, 1.52, 1.658, 1.01...) 随机浮点数将给出相同的值,(为糟糕的英语道歉)
所以一个 1.5 的输入和另一个 1.2 的输入将给出相同的返回值,而一个 1.5 的输入和另一个 2.5 的输入将给出不同的值。我该如何解决这个问题?
请记住,我并没有试图准确地获得 randomFloat,我的问题有点复杂,但如果我能就这个特定问题获得帮助,其他一切都会很容易,以及我说的原因这是我不希望答案告诉我使用 random_device 或 mt 应该播种一次...我已经知道,this 是我正在研究的,如果你真的想知道的话。
谢谢!
【问题讨论】:
-
嗯。我从来没有注意到你可以用
float播种。 -
您每次都传递相同的种子(截断后),因此您得到相同的序列 - 这是预期的。