【问题标题】:Random number generator method随机数生成方法
【发布时间】:2014-05-29 19:54:06
【问题描述】:

所以我有这个方法,它通过创建一个介于 1-26 之间的随机数,然后索引一个字符串数组来提取字母,从而返回一个字母(从 A-Z)。唯一的问题是调用该方法时它不会生成一个新字母。如何在每次调用该方法时生成一个新字母,例如在 while 循环中。这是我的代码:

-(NSString *)alphaGenerator{
    NSUInteger randomLetterInteger = arc4random_uniform(26);
    NSArray *alphabet = @[@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"];
    NSString *alpha = alphabet[randomLetterInteger];
    return alpha;
}

另外,如何将 count 方法返回的数字转换为可以插入 arc4random_uniform 方法的数字?我收到“与指针反转初始化不兼容的整数...”错误。这就是我所拥有的:

-(NSUInteger)numOfDictions{
    NSString *alpha = [self alphaGenerator];
    NSUInteger numb = [cuisines[alpha] count];
    NSUInteger *randomNumOfDictions = arc4random_uniform(numb);
    return *randomNumOfDictions;
}

【问题讨论】:

  • 你想用 randomNumOfDictions 做什么?您正在为指针分配一个随机数,然后取消引用并返回它指向的任何垃圾?这没有任何意义。看起来 alphaGenerator 应该可以工作。尝试从循环中重复调用它并记录其输出。我认为问题出在你的 numOfDictations 方法上——它试图做什么并不明显,但我很确定它已经坏了。
  • 去掉numOfDictions 方法中每个randomNumOfDictions 旁边的星号。
  • 我有一本字典,美食,有 26 个数组(A-Z)。在这些数组中的每一个中都有字典,每个字典都包含 2 个字符串,名称和描述。我首先尝试计算由 alphaGenerator 选择的随机字母数组中的字典数量。然后我想创建并返回一个随机数,它是字典数量中的最大值....@rmaddy,是的,我不知道为什么它们在那里。谢谢
  • @MartinR 该副本与此问题无关。
  • @rmaddy:这个问题(至少)有两个部分(这总是不好的)。 第一部分(在标题中也提到了)“我如何在每次调用方法时生成一个新字母”它清楚地是关于创建随机元素而不重复和应一式两份回答。 - 但我会在争论之前重新打开它。

标签: objective-c ios7


【解决方案1】:

这两行:

NSUInteger *randomNumOfDictions = arc4random_uniform(numb);
return *randomNumOfDictions;

应该是:

NSUInteger randomNumOfDictions = arc4random_uniform(numb);
return randomNumOfDictions;

NSInteger 不是对象类型。这是一种原始类型。

【讨论】:

  • 那么它仍然对整数精度的损失给出的错误无关紧要吗?
  • 如果需要使用强制转换来处理精度问题。
  • 我做到了,非常感谢!事实证明我做的一切都是正确的,我只是没有在我的循环中正确实现 alphaGenerator 方法。我只是调用了该方法,而不是将其分配给字符串。非常感谢你们!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 2017-10-25
相关资源
最近更新 更多