是否有一种用于在C ++中随机输入值到数组的库?

时间:2011-11-08 03:25:26

标签: c++ arrays

就像在Java中一样,(Math。random *)语句是否有一种在C ++中输入数组的方法?

例如,我想用C ++中的RANDOM数字输入6到89之间的数字。将它们分配到数组中。

我知道如何对数字进行排序,但我只想知道使用随机数字来让我的生活更轻松的方法。

我在编程方面很生疏,我对任何批评都持开放态度,但我会很感激你的回应。

4 个答案:

答案 0 :(得分:6)

使用srand为随机数生成器播种,然后使用rand获取随机数。

例如,以下程序使用您请求的范围中的rando值填充数组:

#include <iostream>
#include <cstdlib>
#include <ctime>

int main (void) {
    int xyzzy[10];

    // Seed the generator.

    std::srand (time (0));

    // Populate the array.

    for (int i = 0; i < sizeof(xyzzy) / sizeof(*xyzzy); i++)
        xyzzy[i] = 6 + (std::rand() % 84);

    // Print the array.

    for (int i = 0; i < sizeof(xyzzy) / sizeof(*xyzzy); i++)
        std::cout << xyzzy[i] << "\n";

    return 0;
}

这输出(在我的情况下):

59
51
84
83
58
85
83
25
50
22

请记住,这些随机数的属性可能由于它们的生成方式而不完美,但除非您是统计学家或密码学家,否则它们应该没问题。

答案 1 :(得分:4)

在C ++ 11中

#include <random>

int main()
{
    int arr[10] = {0};

    std::mt19937 generator; // mersenne twister
    std::uniform_int_distribution<> dist(6, 89);
    for(int n=0; n<10; ++n)
    {
        arr[n] = dist(generator);
    }
}

答案 2 :(得分:1)

从6 - 89获取随机数:

srand ( time(NULL) );

int randomNumber = 6 + rand() % (89 - 6 + 1);

答案 3 :(得分:0)

#include <random>
#include <array>
#include <functional>
#include <boost/range/algorithm/generate.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <iostream>
#include <iterator>

int main()
{
    //Create an array
    std::array<int, 10> arr;

    //Fill the array
    std::random_device gen;
    boost::generate(
      arr,
      std::bind(
        std::uniform_int_distribution<int>(6,89),
        std::ref(gen)));

    //Print the generated values
    boost::copy(arr, std::ostream_iterator<int>(std::cout, "\n")); 
}