我使用C ++在Visual Studio中创建了一个多维数据集,我试图给它一个随机的方向来移动。从我在网上看到的,我用于随机数的方程式应该正式生成-1到1或更大的随机数(-1,1)。但由于某种原因,生成的随机数完全相同。
我觉得这个部门有问题,但我无法理解。任何帮助将不胜感激!
// Give the cube a random direction
float x = 2*((float)rand()/(float)(RAND_MAX + 1.0)) - 1;
float y = 2*((float)rand()/(float)(RAND_MAX + 1.0)) - 1;
float z = 2*((float)rand()/(float)(RAND_MAX + 1.0)) - 1;
m_directionVector = XMFLOAT3(x, y, z);
答案 0 :(得分:2)
你应该为新的随机数改变种子。 使用方法:
srand(time(NULL));
答案 1 :(得分:1)
#include <iostream>
#include <chrono>
#include <random>
int main()
{
// use current time as a seed
unsigned nSeed = static_cast<unsigned>
(std::chrono::system_clock::now().time_since_epoch().count());
// choose your favourite random engine
std::default_random_engine gen(nSeed);
// chose a distribution: uniform, normal, etc.
double dLo = -10.0;
double dHi = 10.0;
std::uniform_real_distribution<double> dist(dLo, dHi);
for (int i=0; i<10; ++i)
std::cout << dist(gen) << std::endl;
return 0;
}
9.18209
-9.9738
-9.51743
1.78994
4.13958
-2.04672
-9.38406
1.04908
6.23908
2.55983
注意:以上代码受到http://www.cplusplus.com的压缩(略有改动)。