0

我在弄清楚如何在这里解决我的问题时遇到了一些困难,我想为什么不去这里向您的专业人士寻求帮助。

最重要的是,我在学校只学了几个星期的 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;
}

我希望我已经把自己说清楚了,因为英语不是我的母语,如果我需要澄清任何事情,请告诉我。我确实希望我能找到一些关于如何解决这个问题的帮助,这里有一个不太复杂的解决方案。

4

2 回答 2

2

排序过程不会帮助您防止重复,因此必须在之前解决它。

首先,您确保没有重复的数字。当您获得所需的所有数字时。

为确保没有随机数,有两种选择:

  • 生成每个数字后,检查已经获得的数字。如果重复,丢弃它并获得一个新的随机数。

  • 由于您需要 40 范围内的 7 个数字,因此只需将其用作订单。第一个数字在 0-39 之间选择,第二个数字在 0-38 之间选择,依此类推。已使用的数字被跳过(因此,随机序列 3-5-2-4 表示数字序列 3-6-2-7)

于 2013-10-19T16:16:59.687 回答
0

嗯,检查重复项应该不会太难。

例如,您可以尝试以下方法:

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;
     }
   }
}

我很确定这应该是检查一个数字是否在 random[] 中重复。此外,即使向量更有趣并且更易于使用,它们也不会使此操作更容易。

希望能帮助到你。=)

于 2013-10-19T17:22:18.140 回答