global değişken için tohum kaybediyor Rasgele bir sayı yakalamanın kolay bir yolunu yapmak istedim, ancak gen, rasgele sayı üretecinin işlevler boyunca tohumunu kaybetmiş gibi görünüyor. Bu örneği birden çok kez çalıştırırsanız, oluşturulan ilk rasgele sayının her koşuda rasgele olduğunu görürsünüz, ikincisi ise değil. Bunun nedeni nedir?Statik rasgele sayı üreteci
main.cpp
#include <iostream>
#include "Random.hpp"
class Global
{
public:
Global()
{
Random::seed();
std::cout << "\n" << Random::getRandom(-10, 10);//random
}
void Global::doStuff()
{
std::cout << "\n" << Random::getRandom(-10, 10);//not random
}
};
Global globalInstance;
int main()
{
globalInstance.doStuff();
return 0;
}
Random.hpp
#pragma once
#include <random>
class Random
{
public:
static void seed();
static int getRandom(int minInclusive, int maxInclusive);
private:
static std::default_random_engine gen;
static std::uniform_int_distribution<int> ints;
};
Random.cpp
#include "Random.hpp"
#include <time.h>
std::default_random_engine Random::gen;
std::uniform_int_distribution<int> Random::ints;
void Random::seed()
{
gen.seed(static_cast<unsigned int>(time(NULL)));
}
int Random::getRandom(int minInclusive, int maxInclusive)
{
std::uniform_int_distribution<int>::param_type range(minInclusive, maxInclusive);
ints.param(range);
return ints(gen);
}
Statik olmayan bir üyeden farklı bir statik üye gibi davranıyorsunuz, statik bir üye yaptınız. – kfsone
Lütfen gönderinizi düzenleyin ve [mcve] sağlayın. –
Benim hatam, minimal doğrulanabilir bir örnek vermeliydim minimal bir örnek için gittim. – user46877