c++ - 需要生成100到500的随机数

标签 c++ arrays random numbers

对于我的类作业,我必须生成 120 个介于 100-500 之间的随机数。这是我现在使用的代码。
下面是输出的剪切和粘贴:我期待 100 到 500 范围内的数字。我不确定我做错了什么。我没有得到想要的结果。我该如何修复它以获取 100-500 之间的数字?

跑 -10 跑 -9 跑 -9 跑 -8 跑 -7 跑 -6 跑 -6 跑 -5 跑 -4 跑 -4 跑 -4 跑 -2 跑 -1 跑 -1 跑 1 跑 1 2跑3跑3跑4跑4跑4跑5跑6跑6跑6跑7跑7跑8跑8跑9跑9跑10跑10跑10跑11

void create_random_numbers(int ran[], int x) 
{
    unsigned seed = time(0);

    srand(seed);
    int random_integer;
    for (int index = 0; index<400; index++)
    {

    //  cout << random_integer << endl<<endl;
        ran[index] =  (rand()%500)+100;

        cout << "ran "<< ran[index] << endl << endl;
    }

}

最佳答案

另一种方式是使用uniform int distribution 产生随机整数值i,均匀分布在闭区间[a,b]上,即按照离散概率分布

function
P(i|a,b) = 1/(b − a + 1)
.
#include <random>
#include <iostream>
#include <array>

int main()
{
    std::array<int, 120> numbers;
    std::random_device rd;  //Will be used to obtain a seed for the 
                            //random number engine
    std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded 
                            // with rd()
    std::uniform_int_distribution<> dis(100, 500);

    for (int n = 0; n < 120; ++n)
        //Use dis to transform the random unsigned int generated by gen 
        //into an int in [100, 500]
        numbers[n] = dis(gen);

    for (auto i : numbers) {
        std::cout << ' ' << i;
    }
    std::cout << '\n';
    return 0;
}

关于c++ - 需要生成100到500的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45178577/

相关文章:

c++ - c++ 17 中结构自动定义构造函数的规则是什么?

php - 具有自定义索引 PHP 的 Foreach

javascript - 将两个对象转换为一个数组(JavaScript)

java - 如何在java中获取数组中的随机颜色

c++ - 循环 rand(),在下一个 rand() 上不要使用前一个?

c++ - 如何在 VS Coded UI Test Builder 的自定义控件中将测试提供程序从 MSAA 切换到 UIA

c++ - 在另一个字符串中按字符复制字符串字符

c++ - 您可以将子类作为参数传递给具有父类(super class)参数的函数吗? C++

c - 安西 C : Attempting to count total chars in a file

random - tcsh 来自/dev/random 和/dev/urandom 的随机数