使用std :: uniform_int_distribution并在以后定义其范围 [英] Use std::uniform_int_distribution and define its range later

查看:214
本文介绍了使用std :: uniform_int_distribution并在以后定义其范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在要在结构中创建std::uniform_int_distribution并在以后提供其范围时遇到问题.下面是我想要的.

I have problem where I want to create a std::uniform_int_distribution in a struct and then give its range later. Below is what I want.

#include <random>
#include <iostream>

std::random_device rd;
std::mt19937 gen(rd());

struct group_s {
   int k;
   std::uniform_int_distribution<> dis;
} group;


int main()
{  
    group.dis(0,19);
    std::cout << group.dis(gen) << ' ';
}

我收到以下错误:

no match for call to '(std::uniform_int_distribution<>) (int, int)'
  cpu_group.dis(0,19);

我该怎么做?

推荐答案

您可以做

group.dis = std::uniform_int_distribution<>(0,19);

group.dis.param(std::uniform_int_distribution<>::param_type(0,19));

另一种方法是向您的结构添加方法

Another way would be to add a method to your struct

struct group_s {
    int k;
    std::uniform_int_distribution<> dis;
    void set(int a, int b) { dis = std::uniform_int_distribution<>(a,b); }
} group;


group.set(0,19);

这篇关于使用std :: uniform_int_distribution并在以后定义其范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆