就像在Java中一样,(Math。random *)语句是否有一种在C ++中输入数组的方法?
例如,我想用C ++中的RANDOM数字输入6到89之间的数字。将它们分配到数组中。
我知道如何对数字进行排序,但我只想知道使用随机数字来让我的生活更轻松的方法。
我在编程方面很生疏,我对任何批评都持开放态度,但我会很感激你的回应。
答案 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"));
}