C++ C++;生成随机数 srand(时间(空)); 对于(int o=0;o

C++ C++;生成随机数 srand(时间(空)); 对于(int o=0;o,c++,random,numbers,C++,Random,Numbers,你的数字将上升到(不包括)126+33,根据我的计算是159 这真的是基本逻辑。rand()%126将上升到(不包括)126…然后添加33 我猜你的意思是x=(rand()%(126-33))+33 此外,你应该: 摆脱那些“神奇的数字” 不使用“%”,因为分布非常差 研究C++内置的随机数生成功能(与C相反) 您可以使用 srand(time(NULL)); for (int o = 0; o < 8; o++){ x = rand() % 126 + 33;

你的数字将上升到(不包括)126+33,根据我的计算是159

这真的是基本逻辑。
rand()%126
将上升到(不包括)126…然后添加33

我猜你的意思是
x=(rand()%(126-33))+33

此外,你应该:

  • 摆脱那些“神奇的数字”
  • 不使用“%”,因为分布非常差
  • 研究C++内置的随机数生成功能(与C相反)

您可以使用

srand(time(NULL));
    for (int o = 0; o < 8; o++){

        x = rand() % 126 + 33;      
        keysInNumbers[o] = x;
        cout << "Randomly generated number: " << keysInNumbers[o] << endl;
    };
inta=33;
int B=126;
auto-myrand=std::bind(std::uniform_int_distribution(A,B),std::mt19937(std::random_device());
对于(int o=0;o<8;o++){
x=myrand();
键编号[o]=x;

看C++11的
rand()%126
最多可以是125。然后添加33。“x=(rand()%126-33)+33”这将生成33以下的数字,不是吗?将检查您提到的随机数字生成功能。抱歉,您最初在126-33之间没有两个括号,这意味着126。我的错误,没有注意到这一点。谢谢您的帮助!
int A = 33;
int B = 126;
auto myrand = std::bind(std::uniform_int_distribution<>(A,B), std::mt19937(std::random_device()()));

for (int o = 0; o < 8; o++){

    x = myrand();      
    keysInNumbers[o] = x;
    cout << "Randomly generated number: " << keysInNumbers[o] << endl;
};