使用for循环显示内容

时间:2015-10-28 01:55:14

标签: c++

我正在尝试编写一个程序,该程序从包含五种不同水果或蔬菜的数组中随机选择三个项目,然后将这个随机选择的内容显示给用户。现在我无法理解为什么我的输出不一致,因为有时当我运行它时我会得到这样的结果:

$sendvar = "?subject=".$subjectfromemail."&from=".=$from."&message=".$messagefromemail."&wrong_code=true";
header("Location:". $_SERVER['HTTP_REFERER'].$sendvar);
die();

前两个项目缺失,有时我会得到这个:

This bundle contains the following: 


Broccoli

这是我目前遇到问题的代码部分:

This bundle contains the following: 
Tomato
Tomato
Tomato

有人可以帮助我理解为什么我会得到这个输出?谢谢!

3 个答案:

答案 0 :(得分:1)

Box[f] = Box[boxee];正在改变你正在挑选东西的“盒子”的内容。如果第一个随机数是3,则第3项被复制到第0项,所以现在你有两倍的机会在下一次循环中获得该项目......

答案 1 :(得分:1)

您正在使用随机选择的项目覆盖数组的元素。

eMap.sourceExpression = [NSExpression expressionWithFormat:@"FETCH(FUNCTION($manager, \"fetchRequestForSourceEntityNamed:predicateString:\" , \"Country\", \"TRUEPREDICATE\"), $manager.sourceContext, NO)"];

例如:如果Box[f] = Box[boxee]; boxee=1,它将覆盖索引0处的元素1,同时索引1处的元素相同,留下相同项目的两个副本。

使用:std:random_shuffle代替。

答案 2 :(得分:1)

不要像你这样做:) 就像@ John3136指出的那样,你搞乱了你的Box变量..

void BoxOfProduce::output()
{

  srand(time(NULL)); //keep in mind that this is NOT entirely random!
  int boxee = rand() % 5;
  int i = 0;
  while(i<5)
  {
    boxee = rand() % 5;
    cout<<Box[boxee]<<endl;  //this line might be wrong, my point is to print element of your array with boxee index
    i++;
  }

}