输出 4 组 7 个升序有序和唯一随机数
Output 4 set of 7 ascendant ordered and unique random numbers
我在弄清楚如何解决我的问题时遇到了一些困难,我想为什么不去这里向专业人士寻求帮助。
最主要的是,我只在学校学习了几个星期C++,大致是什么我一直在经历if/else,for/while/do循环,数组,显然还有一些更基本的东西,所以我在尝试解决这个问题时的主要问题是我的知识是否足够?如果我继续阅读有关向量等的信息,这会更容易解决吗?
现在,我成功地做到了对我像这样解决的数字进行排序:基本上我使用的是一种气泡排序算法(我认为?
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
{
if(slump[j]>random[j+1])
{
temp = random[j];
slump[j] = random[j+1];
slump[j+1] = random;
}
}
}
但是,在为0-6的每个索引分配一个随机数时,我一生都无法弄清楚如何防止出现重复项(行与行之间可能有重复项,但不能在同一行上)。
for(int j=0;j<7;j++)
{
random[j] = rand()%40+1;
}
我希望我已经把自己说清楚了,因为英语不是我的母语,如果我需要澄清什么,请告诉我。我确实希望我能找到一些关于如何解决这个问题的帮助,这里有一个不太复杂的解决方案。
排序过程不会帮助您防止重复,因此必须事先解决。
首先,确保没有重复的号码。当您获得所需的所有数字时。
要确保没有随机数,有两个选项:
-
生成每个数字后,对照已获得的数字进行检查。如果重复,则丢弃它并获得一个新的随机数。
-
由于您想要 7 个宽范围内的 40 个数字,因此只需将其用作订单即可。第一个数字在 0-39 之间选取,第二个数字在 0-38 之间选取,依此类推。跳过已使用的数字(因此,3-5-2-4 的随机序列表示数字序列 3-6-2-7)
嗯,检查重复项应该不会太难。
例如,您可以尝试以下方法:
for (int i = 0; i < 7; i++)
{
random[i] = rand%40 + 1;
}
for (int i = 0; i < 7; i++)
{
for (int j = 1; j < 7; j++)
{
if(random[i] == random[j])
{
random[i] = rand%40 + 1;
i = i -1;
break;
}
}
}
我很确定这应该是一个专业的检查,检查一个数字是否被随机重复[]。此外,即使向量更有趣且更容易使用,它们也不会使此操作更容易。
希望它有帮助。 =)
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- 何时在引用或唯一指针上使用移动语义
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 计算排序向量的向量中唯一值的计数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 通过组合不同的类型来创建唯一的id
- if数组上的随机数
- 具有随机数的唯一向量
- 使用具有唯一随机数的结构数组创建多个对象
- 在C++中生成唯一的随机数
- 在向量中插入唯一的随机数
- 在多维数组中生成唯一的随机数C++
- 生成唯一的多个随机数
- 从一个特定的范围中生成一定数量的唯一随机数
- 在区间[0,n-1]中生成k个唯一随机数
- 输出 4 组 7 个升序有序和唯一随机数
- 在数组C++中生成唯一随机数
- 试图在每次迭代中产生一个唯一的随机数序列
- 使用线程生成唯一的随机数