2011-08-01 51 views
0

複数の質問をランダムな順序で出力したいとします。すべての質問を繰り返すことなくランダムに質問するにはどうすればよいですか?switch文でランダムなケースを選択する方法

for(int i=0; i<4; i++) 
{ 
    int question=rand()%4; 
    switch(question) 
    { 
     case 0: 
      NSLog(@"What is your name"); 
      break; 
     case 1: 
      NSLog(@"Who are you"); 
      break; 
     case 2: 
      NSLog(@"What is your name"); 
      break; 
     case 3: 
      NSLog(@"How do you do"); 
      break; 
     case 4: 
      NSLog(@"Are you?"); 
      break; 
    } 
} 
+0

あなたは 'switch'から' for'ループを削除する方法を尋ねていますか? – Josh

+2

ちょっとしたヒント:質問タイトルとして「ランダム質問」を置くことは、多分ランダムな質問をしているように聞こえるので、おそらく良い考えではありません。 「switchステートメントでランダムなケースを選択する方法」のようなものが良いかもしれません。 – mgalgs

答えて

5

質問を配列に入れてください。質問の開始時に配列をシャッフルします。今度は、反復ごとに1つの質問をリストから取り出し、質問し、答えを得て、質問がなくなるまで続けます。

+0

さらに読むと、これはより良い答えだと思います.OPの質問はかなり曖昧ですが、この答えは彼が探しているものかもしれません。 –

+1

@ Josh @ Joe @ Carl Norum私にあなたの注意を払ってくれてありがとう – NCFUSN

1

シードする必要性からして、より良いアルゴリズムのためarc4random()を使用することをお勧めします。それ以外の場合はsrandに電話をかけてrandに電話をかけてください。

+0

この便利な情報をお寄せいただきありがとうございますが、リピートを完全に回避する方法はありますか? – NCFUSN

+1

Nathan - 私は@ Marvoの答えがあなたが探しているものを打つと思う。 –

+0

@Carl Norum私はそれがおそらく期待される結果であることに同意します。 – Joe

4

rand(3)は、低いビットのかなり短いサイクルを持つ実装が貧弱なことで有名です。異なるビットを使用してみるか、代わりにrandom(3)を使用してください。実際、OS Xのrand(3) man pageは、次のように述べています。

これらのインターフェイスはrandom(3)で廃止されました。

また、% 4は3より大きくなることはありませんので、case 4はこのプログラムでは実行されません。

関連する問題