Понадобился мне тут простейший псевдо-случайный генератор. Захожу на gemini.google.com, спрашиваю.
Hi Gemini,Даёт вполне вразумительный код, но мне нужно в вещественных числах.
Please show me a simple C++ implementation of a Lehmer pseudo random generator.
Can you please modify it to return real values in range [0, 1)?Получаю приемлемое решение:
Что ни говорите, а от искусственного интеллекта есть польза в домашнем хозяйстве.#include <cstdint>
class LehmerRNG {
public:
LehmerRNG(uint64_t seed = 0xdeadbeef) : state(seed) {}
double generate() {
state = state * 6364136223846793005ULL + 1;
return static_cast<double>(state) / (static_cast<double>(UINT64_MAX) + 1);
}
private:
uint64_t state;
};

no subject
Date: 2024-09-01 11:22 (UTC)Можно не + 1, а, скажем, + 37.
Или + 42.
Или + 666.
Или -.
Все равно ни на что не повлияет, а віглядеть будет наукообразнее.
no subject
Date: 2024-09-01 12:27 (UTC)Забавно, что ожидается, что все результаты будут legit double.
no subject
Date: 2024-09-01 18:44 (UTC)Ну а чо, в диапазон double с лихвой помещается.
no subject
Date: 2024-09-01 18:45 (UTC)no subject
Date: 2024-09-02 12:33 (UTC)Искусственный интеллект не знает, что преобразовывать целые случайные числа в плавающую точку совсем не так просто.