【问题标题】:How to choose a number randomly from a list/Array in c++?如何从 C++ 中的列表/数组中随机选择一个数字?
【发布时间】:2020-03-06 14:35:37
【问题描述】:

尊敬的专家, 我有一个名为 Dstr 的向量,如果我执行 Dstr.size() 它会给我一个数组。我想从 Dstr/Dstr.size() 中随机选择一个候选人。你能建议我如何在 C++ 中做到这一点吗?

提前致谢 问候

【问题讨论】:

标签: c++


【解决方案1】:

要从向量中获取随机元素,您可以使用std::sample

decltype(Dstr)::value_type element;
std::sample(Dstr.begin(), Dstr.end(), &element, 1, std::mt19937{std::random_device{}()});

需要 C++17。

【讨论】:

    【解决方案2】:

    这是生成随机数的 C++ 方法。我假设您的数组/向量不为空

    size_t random(size_t min, size_t max)
    {
        static std::mt19937 randGen( std::random_device{}() );
        return std::uniform_int_distribution<size_t>(min, max)(randGen);
    }
    auto val = Dstr.at(random(0, Dstr.size() - 1));
    

    【讨论】:

      【解决方案3】:

      自动候选 = Dstr[rand() % Dstr.size()];

      【讨论】:

      • 我投了反对票,因为在 C++ 中你不应该使用 C 随机库,而应该使用 c++ 随机库。
      • 你能给我C++中的对应部分吗?我很高兴看到它!
      • 也许除了反对,也许有人应该解释为什么我们不应该使用 C 随机函数(例如,因为 mod 运算符使某些结果比其他结果更有可能,除非大小是 2 的幂)
      • 我相信最好的帮助是帮助你朝着正确的方向前进,让你努力工作和研究。你不知道 C random 不好,所以你需要有人指点你。但是,您真的需要有人为您在 Google 中输入“为什么 C rand 不好”吗?好吧,随心所欲:这里是:stackoverflow.com/questions/52869166/…stackoverflow.com/questions/39288595/…stackoverflow.com/a/58775301/2805305
      • 只是不要期望学习搜索、分析、过滤、选择、组合、应用和调整解决方案以解决您自己的问题所需的关键技能,如果您不这样做,而是期望成为喂舀每一个解决方案。我很抱歉这么直率和粗暴,但你看起来真的在努力学习,所以我只告诉你这个,因为我希望它也能帮助你和其他读者。寻求帮助是有价值的,独自挣扎也是有价值的。不要把一个视为理所当然,也不要忽视另一个
      猜你喜欢
      • 2021-12-31
      • 2020-10-04
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多