vak: (Default)
[personal profile] vak
Понадобился мне тут простейший псевдо-случайный генератор. Захожу на 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;
};
Что ни говорите, а от искусственного интеллекта есть польза в домашнем хозяйстве.

Date: 2024-09-01 11:22 (UTC)
From: [personal profile] nz

(static_cast<double>(UINT64_MAX) + 1)

Можно не + 1, а, скажем, + 37.
Или + 42.
Или + 666.
Или -.
Все равно ни на что не повлияет, а віглядеть будет наукообразнее.

Date: 2024-09-01 12:27 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Красивое. Но простовато.
Забавно, что ожидается, что все результаты будут legit double.
Edited Date: 2024-09-01 12:28 (UTC)

Date: 2024-09-02 12:33 (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Искусственный интеллект не знает, что преобразовывать целые случайные числа в плавающую точку совсем не так просто.