gpt4 book ai didi

c++ - 在 bitset 中随机选择 set bit 位置的最佳 C++ 方法

转载 作者:太空狗 更新时间:2023-10-29 20:36:38 25 4
gpt4 key购买 nike

我有std::bitset<32> word我想随机选择某个位的索引 (0-31),即 1。如果没有循环和计数器,我该怎么做。有没有std::algorithm适合那个?如果它更容易,我可以转换 bitset到 string 或 int 并在 string 或 int 上进行。

最佳答案

这是第一次尝试:

std::bitset<32> bitset{...};

std::mt19937 prng(std::time(nullptr));
std::uniform_int_distribution<std::size_t> dist{1, bitset.count()};

std::size_t p = 0;
for(std::size_t c = dist(prng); c; ++p)
c -= bitset[p];

// (p - 1) is now the index of the chosen bit.

它的工作原理是计算设置位,在该间隔内随机选择 c,然后寻找第 c 设置位。

关于c++ - 在 bitset 中随机选择 set bit 位置的最佳 C++ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460396/

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