C++ 随机顺序的连续数
如何生成包含一组连续数字但顺序随机的数组?例如,连续的数字从8到100(没有重复),我想要的是一个包含所有这些数字的数组,但序列是随机的。我假设8和100包含在这个范围内C++ 随机顺序的连续数,c++,C++,如何生成包含一组连续数字但顺序随机的数组?例如,连续的数字从8到100(没有重复),我想要的是一个包含所有这些数字的数组,但序列是随机的。我假设8和100包含在这个范围内 #include <algorithm> #include <numeric> #include <iterator> int main() { const size_t N = 93; int a[N]; std::iota( std::begin( a ), std
#include <algorithm>
#include <numeric>
#include <iterator>
int main()
{
const size_t N = 93;
int a[N];
std::iota( std::begin( a ), std::end( a ), 8 );
std::random_shuffle( std::begin( a ), std::end( a ) );
}
我想这个范围包括8和100
#include <algorithm>
#include <numeric>
#include <iterator>
int main()
{
const size_t N = 93;
int a[N];
std::iota( std::begin( a ), std::end( a ), 8 );
std::random_shuffle( std::begin( a ), std::end( a ) );
}
我假设你是一名学生,并且是编程新手,因此应该告诉你一些基础知识 rand()生成随机数 如果你想让数字在一个特定的范围内,那么取它的mod,例如
rand()%93; // generate random numbers from 0-92
同样地,
(rand()%93)+8//将生成8-100之间的数字
此外,为了检查重复项,您可以将数字与已存储在数组中的数字进行比较。我假设您是学生,并且是编程新手,因此应该告诉您一些基本知识 rand()生成随机数 如果你想让数字在一个特定的范围内,那么取它的mod,例如
rand()%93; // generate random numbers from 0-92
同样地,
(rand()%93)+8//将生成8-100之间的数字
此外,为了检查重复项,您可以将数字与数组中已存储的数字进行比较。听起来几乎像是在洗牌。请使用
std::random\u shuffle
,看看这篇文章:你们为什么不发布评论作为答案,而不是作为评论?听起来像是在洗牌。使用std::random_shuffle
,看看这篇文章:你们为什么不把你们的评论作为答案而不是评论发表?什么是std::itoa
?我在我的标准副本中找不到它(而且你传递给它的参数与旧Unices中这个名字的功能不一样)。@lisyarus我误读了它;我读了《伊藤忠传》(它出现在所有早期的Unices中,但没有成为任何标准)。这也是我在标准中搜索的内容。什么是std::itoa
?我在我的标准副本中找不到它(而且你传递给它的参数与旧Unices中这个名字的功能不一样)。@lisyarus我误读了它;我读了《伊藤忠传》(它出现在所有早期的Unices中,但没有成为任何标准)。这也是我在标准中搜索到的。与已经生成的数字相比,速度可能非常慢,而且它的时间开销很大程度上取决于使用的伪随机数生成算法。生成一个序列,然后将其洗牌是一个更好的主意,因为它的时间开销是线性的。如果一个数字(比如说0)是在无限长的时间后生成的呢?与已经生成的数字相比,它的时间开销可能非常慢,并且它的时间开销很大程度上取决于使用的伪随机数生成算法。生成一个序列,然后将其洗牌是一个更好的主意,因为它的时间成本是线性的。如果一个数字(比如说0)是在无限长的时间后生成的呢?