gpt4 book ai didi

c++ - 如何将boost随机数生成器的状态存储为const char *?

转载 作者:行者123 更新时间:2023-11-28 07:10:35 26 4
gpt4 key购买 nike

我很难弄清楚如何创建生成器内部状态的内存缓冲区以用于 C 样式代码。我无法存储对象,所以我需要在编译时知道生成器状态的大小。除了这个 boost 随机 header 之外,我不能使用任何与 boost 相关的东西。我必须坚持使用 STL 的东西。我尝试使用 stringstream,但它在遇到空字符后停止。如果我必须编写一个自定义流缓冲区,它需要在下面的函数中内联,我只是不确定该怎么做。我的目标是将随机数生成器状态存储在 c 结构中的恒定大小的内存块中。我找到的最简单的解决方案是用具有易于识别的数组大小的梅森扭曲算法的 c 实现替换 boost。

static boost::mt19937 rngEngine;
static boost::variate_generator<boost::mt19937&, boost::uniform_int<> > generator(rngEngine, boost::uniform_int<>(0, INT_MAX));

const char * getState(void) {
std::ostringstream content;
content << rngEngine;
return content.str().data();
}

最佳答案

从您的 getState 函数返回一个 std::string,它将具有 size(或 length 在 C++03 中)和嵌入的 '\0' 字符。

所写的代码是未定义的行为,因为 const char* 比产生它的字符串还长。

关于c++ - 如何将boost随机数生成器的状态存储为const char *?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com