C言語でシード値を変えずに乱数を使う

映画『ちはやふる上の句』 広瀬すず 野村周平 真剣佑

かっこいいです。かるたってスポーツなんですね。当然札は覚えておかないといけませんが、札の位置を覚えるのも競技なんですね。
頭脳が試されます。競技かるたをしている人たちに比べたら、私は常時頭止まっている状態だと思いました。
記憶力とか訓練しないといけない気持ちになりましたので、今回は記憶力の訓練ゲームを作ってみます。

C言語の乱数生成は、srandでシード値を変更して、randで乱数を得ますよね。

~$ cat -n r.c
     1	#include <stdlib.h>
     2	#include <stdio.h>
     3	#include <time.h>
     4	
     5	int main()
     6	{
     7		srand(time(NULL));
     8	
     9		printf("%d\n", rand() % 100);
    10	
    11		return 0;
    12	}
    13	

ビルドして、実行すると、当然毎回値が異なります。

~$ gcc -o r r.c
~$ ./r
98
~$ !!
./r
7
~$ !!
./r
96
~$ 

これを、srandを使用せずに、毎回固定の乱数を表示するようにして、ゲームに使用することができます。
アクションゲームなら敵の動きを同じにしたりすることができますね。

~$ mv r.c fix-r.c
~$ sed '/srand/d' -i fix-r.c
~$ gcc -o fix-r fix-r.c
~$ ./fix-r
83
~$ ./fix-r
83
~$ 

では、自分の記憶力の訓練用に作ったゲームのソースです。

     1	#include <stdlib.h>
     2	#include <stdio.h>
     3	
     4	int
     5	main ()
     6	{
     7	  int i, r, x;
     8	
     9	  for (i = 1; i <= 10; i++)
    10	    {
    11	      r = rand () % 100;
    12	      printf ("Q%d.数字の何が出ますか?\n", i);
    13	      scanf ("%d", &x);
    14	      if (x == r)
    15		{
    16		  printf ("正解です。\n");
    17		}
    18	      else
    19		{
    20		  printf ("不正解です。正解は%dでした\n", r);
    21		  printf ("GAME OVER\n");
    22		  return 0;
    23		}
    24	    }
    25	  printf ("全問正解です\n");
    26	  return 0;
    27	}

早速実行して、数を覚え、10問正解してみました。いやあえらく時間かかりましたよ。

~$ ./a.out
Q1.数字の何が出ますか?
83
正解です。
Q2.数字の何が出ますか?
86
正解です。
Q3.数字の何が出ますか?
77
正解です。
Q4.数字の何が出ますか?
15
正解です。
Q5.数字の何が出ますか?
93
正解です。
Q6.数字の何が出ますか?
35
正解です。
Q7.数字の何が出ますか?
86
正解です。
Q8.数字の何が出ますか?
92
正解です。
Q9.数字の何が出ますか?
49
正解です。
Q10.数字の何が出ますか?
21
正解です。
全問正解です
~$ 

10個の数字に苦労したので、百人一首など覚えられる気がしません。

6 responses to “C言語でシード値を変えずに乱数を使う

  1. Did you just create your new Facebook page? Do you want your page to look a little more “established”? I found a service that can help you with that. They can send organic and 100% real likes and followers to your social pages and you can try before you buy with their free trial. Their service is completely safe and they send all likes to your page naturally and over time so nobody will suspect that you bought them. Try their service for free here: http://nt4.pl/u/72

  2. Do you need more traffic to your website or more product sales? Get 500 free keyword targeted visitors just for trying the 7 day free trial: https://lil.ink/4q

  3. Ecmioones are in dire straits, but I can count on this!

  4. This is a comment to the website creator. I discovered your C言語でシード値を変えずに乱数を使う | コマンドの達人 page by searching on Google but it was difficult to find as you were not on the first page of search results. I know you could have more traffic to your website. I have found a company which offers to dramatically improve your website rankings and traffic to your website: https://mols.me/YRW} I managed to get close to 500 visitors/day using their services, you can also get a lot more targeted visitors from search engines than you have now. Their services brought significantly more traffic to my website. I hope this helps!

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA