0

ランダムな順序でアクセスしたいオブジェクトの辞書があります。適切にランダムである必要はありませんが、十分な量の変動があればよいのです。

辞書は次のようになります。

'customer0' : '<Customer Object>'
'customer1' : 'inactive'
'customer2' : 'inactive'
'customer3' : 'inactive'
'customer4' : '<Customer Object>'

キーは、ゲームで顧客を表すために使用される UI 要素に対応し、基本的に毎回同じ順序で表示されないようにしたいと考えています。

4

3 に答える 3

3

乱数については、スタックで詳細をご覧ください。したがって、文字列キーがある場合は、次のようにsmthを使用できます。

NSString *key = [NSString stringWithFormat:@"customer%d", arc4random()%5];
<customer object> *customObj = [yourDictionary objectForKey:key];
于 2012-10-23T10:24:13.950 に答える
2

擬似コードの場合:

  1. 構造のコピーを作成します-キーを配列に入れることができます
  2. 0からコピーのサイズ-1までのランダムな整数nを選択します
  3. 位置nの要素を(取得および削除のように)抽出します
  4. サイズ==0になるまで2)から繰り返します
于 2012-10-23T10:21:56.240 に答える
0

私はこれをテストしていませんが、これらの行に沿った何かがあなたが目指しているものを達成するはずです:

//create dictionary
NSDictionary *dictionary = [NSDictionary dictionary];

//gather set of keys from array of keys
NSSet *keys = [NSSet setWithArray:[dictionary allKeys]];

//gather random key
NSString *key = [keys anyObject];

//gather dictionary value with key
NSString *value = [dictionary objectForKey:key];

NSSetの辞書キーからを作成することで、配列からランダムなキーを収集するためにNSArray使用できます。anyObject

これを達成する方法は確かに他にもありますが、これが私が考えることができる最も簡潔なアプローチです。

于 2012-10-23T10:20:28.117 に答える