C++ 随机顺序的连续数

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

如何生成包含一组连续数字但顺序随机的数组?例如,连续的数字从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::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)是在无限长的时间后生成的呢?