如何在c ++中从枚举中返回一个随机元素

时间:2012-05-12 07:50:22

标签: c++ enums random-sample

  

可能重复:
  generating random enums

我正在寻找在c ++中从枚举中选择元素的最佳方法。一开始,我感谢使用一个开关,但是,我有一些大的枚举并且效率不高,所以,我正在尝试使用每个人来做它。

在枚举中选择水果元素:

enum FruitType
{
    kApple,
    kOrange,
    kMelon
};

尝试此功能:

/**
 * R3turn a random fruit
 */
FruitType giveMekRandomFruit()
{
    randNumber = rand % __TOTALFRUITS // Enum total = 3 elements

    for (int& i: FruitType)
    {
           if (randNumber = i)
           {
           CCLog("Random Fruit selected:" + i);
           return i;   // return the number selected

            }
    }
}

显然不工作,我有一个关于syntaxis或概念的问题,任何想法???

感谢您的时间。

1 个答案:

答案 0 :(得分:5)

如果枚举值是连续的,只需在适当的范围内取一个随机整数并转换为枚举。否则,使用随机整数创建一个枚举值和索引数组。