【问题标题】:Using Srand With Enums将 Srand 与枚举一起使用
【发布时间】:2014-05-20 01:14:28
【问题描述】:

我有一个颜色的枚举:

enum colour_t {red, blue, green, yellow, orange, white};

我正在制作一个魔方加扰器,所以我需要使用 srand 或某种随机发生器来为每个方块选择一种颜色。是否可以将 srand 与枚举值一起使用,或者我必须给它一些整数参数(1-6)并为每个数字对应一种颜色。

谢谢, 特里斯坦

【问题讨论】:

  • 天真地使用模运算符。 (如果你关心超强的随机性,一些 PRNG 可以生成在特定模数下具有模式的序列,所以如果是这种情况,你应该对你正在使用的 PRNG 进行一些研究)。此外,由于您的模数可能不会均分范围,因此您可能需要丢弃一些极值,以确保每个 bin 的大小相同。

标签: c++ enums srand


【解决方案1】:

你可以投:

static_cast<colour_t>(rand() % (white + 1))

【讨论】:

  • 运行它总是返回白色,也许我执行错了?我通过说:“colour_t color = static_cast(rand() % (white + 1));”来实现它然后有一个 if 语句来检查(颜色 == 红色)蓝色、绿色等。
  • @Tristan 你几乎肯定会错误地调用srand()...确保在程序启动时调用它一次且仅调用一次(通常std::srand(std::time(NULL));main() 上就足够了),那么每次你打电话给rand() 你都会得到一个伪随机结果。如果您继续使用相同的种子调用srand(),它将重置序列并开始产生相同系列的伪随机数......
猜你喜欢
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2017-12-08
相关资源
最近更新 更多