Почему при такой записи и постоянном компилировании, значение переменной а устанавливается случайное (например 4000) и при каждом последующем компилировании незначительно меняется (например 4010>>422>>4030>>4045 и т. д.) то есть нет такого что пр каждой компиляции значения были абсолютно разные (например 4000>>1843>>13490>>100500 и т. д) фух надеюсь понятно объяснил))
int main()
{
srand(time(NULL));
int a = rand();
cout << a << endl;
Другие языки программирования и технологии
Вопрос по функции rand srand c++
Проверь, что у тебя возвращает RAND_MAX
Обычно это число только 32767
Так что больше точно не скакнет, а так вроде и нормально
Обычно это число только 32767
Так что больше точно не скакнет, а так вроде и нормально
Влад Яценко
ну я понял что максимум может 32767 вернуть, меня интересует почему возвращаемые значения генерируются по возрастания от начального случайного, а я хочу чтобы были абсолютно разные и не предсказуемые
#include <iostream>
#include <random>
#include <iomanip>
using namespace std;
class Random final {
public:
Random(const int a, const int b) {
set(a, b);
}
void set(int a, int b) {
if (a > b) swap(a, b);
const uniform_int_distribution<>::param_type x(a, b);
x_ = x;
}
int get() {
mt19937 gen(rd_());
const uniform_int_distribution<> uid(x_);
return uid(gen);
}
private:
uniform_int_distribution<>::param_type x_;
random_device rd_;
};
int main() {
Random rand(1, 100);
const auto n = 15U;
for (auto i = 0U; i < n; ++i) cout << setw(4U) << rand.get();
cout.put('\n');
rand.set(-10, 10);
for (auto i = 0U; i < n; ++i) cout << setw(4U) << rand.get();
cout.put('\n');
rand.set(4000, 5000);
for (auto i = 0U; i < n; ++i) cout << setw(5U) << rand.get();
cout.put('\n');
system("pause");
}
#include <random>
#include <iomanip>
using namespace std;
class Random final {
public:
Random(const int a, const int b) {
set(a, b);
}
void set(int a, int b) {
if (a > b) swap(a, b);
const uniform_int_distribution<>::param_type x(a, b);
x_ = x;
}
int get() {
mt19937 gen(rd_());
const uniform_int_distribution<> uid(x_);
return uid(gen);
}
private:
uniform_int_distribution<>::param_type x_;
random_device rd_;
};
int main() {
Random rand(1, 100);
const auto n = 15U;
for (auto i = 0U; i < n; ++i) cout << setw(4U) << rand.get();
cout.put('\n');
rand.set(-10, 10);
for (auto i = 0U; i < n; ++i) cout << setw(4U) << rand.get();
cout.put('\n');
rand.set(4000, 5000);
for (auto i = 0U; i < n; ++i) cout << setw(5U) << rand.get();
cout.put('\n');
system("pause");
}
просто так выпадает, ничего специфичного
Влад Яценко
я смотрел видео урок там автор прописывал подобный код и у него возвращало случайные значения, а у меня возвращает например 100 потом чуть больше (нап 115) потом еще чуть больше (нап 123) и т. д. тоесть чтобы вернулось например 5000 мне надо подождать определенное количество времени пока не натикает до этих 5000))
Влад Яценко
а хотя нет, там он просто 2 раза ранд прописывал и возвращал два число, первое из них постоянно немного возрастало и возвращалось, а второе возвращалось по нормальному (генерировались разные значения)
И у меня по чуть - чуть прирост прослеживается. Давай так сделаем.
#include <iostream>
#include <windows.h>
#include <string>
#include <ctime>
#include <functional>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(time(NULL));
system("color 0A");
for (size_t u = 0; u < 10u; ++u)
{
cout << rand() << endl;
string s = to_string(rand()) + to_string(clock());
hash<string> h;
cout << h(s) << endl;
cout << endl;
}
system("pause");
return 0;
}
Запускай несколько раз этот код и сравнивай по значениям.

#include <iostream>
#include <windows.h>
#include <string>
#include <ctime>
#include <functional>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(time(NULL));
system("color 0A");
for (size_t u = 0; u < 10u; ++u)
{
cout << rand() << endl;
string s = to_string(rand()) + to_string(clock());
hash<string> h;
cout << h(s) << endl;
cout << endl;
}
system("pause");
return 0;
}
Запускай несколько раз этот код и сравнивай по значениям.

погуглите вихрь мерсенна mersenne()
Похожие вопросы
- Функция калькулятора на C++
- C++. Вопрос по функции memmove()
- Язык си функция rand, не пойму почему так
- Вопросы про функции. За лучший и полный ответ 50 баллов
- простейшая программа которая будет выводить ответ функций умножения в C#
- Вопрос про функции (с++)
- Вопрос тем, кто отлично знает C++
- Вопрос по примеру из учебника C++
- Извините за тупой вопрос, но для чего в c++ нужны классы? Для того что бы было легко отсортировать код или ещё зачем?
- Вопрос-обсуждение. Gamedev. С# и C++. Игровые движки.