1

我有一个 NS_OPTION 我这样定义:

 typedef NS_OPTIONS(NSInteger, PermittedSize) {
  SmallSize = 1 << 0,
  MediumSize = 1 << 1,
  LargeSize = 1 << 2
 }; 

后来我设置了我需要的值:

 PermittedSize size = SmallSize | MediumSize;

我正在使用它为特定级别的游戏随机生成各种中小型对象(duh)。选择要生成的对象大小的最佳方法是什么?意思是,我想为我生成的每个对象随机选择它是否是允许的 2 个选项之一(在这种情况下为小和中)。通常我会使用带有我需要的数字范围的 arc4random 函数 - 但在这种情况下,如何使用位来完成?(然后映射回 PermittedSize 类型的值?

4

2 回答 2

2

使用 arc4random 的结果来确定您想要执行的位移量。像这样的东西:

int bitShiftAmount = arc4random_uniform(numberOfPermittedSizes);
PermittedSize size = 1 << bitShiftAmount;
于 2013-11-05T02:13:01.743 回答
1

您仍在使用整数。SmallSize是 1.MediumSize是 2. 并且LargeSize4.

所以从 1 到 3 中选择一个随机数。1 小,2 中等,3 两者兼有。

一旦你有一个随机数,分配它。

NSInteger val = arc4random_uniform(3) + 1; // give 1-3
PermittedSize size = (PermittedSize)val;
于 2013-11-05T02:11:42.217 回答