質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

2回答

1366閲覧

サイコロを二回ずつ100回振った時の和の分布

sayhello

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/06/08 18:00

サイコロを二回ずつ100回振った時の和の分布

サイコロを一回振ったときの分布まではだせるのですが、
二回ずつ100回振り、しかもその和となるとわからなくなりました。
以下のソースコードは、サイコロをただ100回降った時の分布です。
C言語を初めてまだ一か月ほどの青二才です、
どうか後学のためと思いどのようなコードを書けばいいのかお教えください。

### #include <stdio.h> #include <stdlib.h> int main(void) { int i,c[6]; srand(100); for(i=0;i<6;i++)c[i]=0; for(i=0;i<100;i++)c[rand()%6]++; for(i=1;i<=6;i++)printf("%d:%d\n", i,c[i-1]); // your code goes here return 0; } ```C言語

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

C

1#include <stdio.h> 2#include <stdlib.h> 3 4/* ダイスを振り、出た目(1~6) を返す */ 5int dice() { 6 return rand()%6 + 1; 7} 8 9int main(void) { 10 int i; 11 int c[13]; /* 度数分布表 */ 12 srand(100); 13 14 /* まず度数分布表をall-0 に */ 15 for( i = 0; i < 13; i++ ) { 16 c[i] = 0; 17 } 18 19 /* 「ダイスをふたつ振り、目の合計を勘定する」x100回 */ 20 for ( i = 0; i < 100; i++ ) { 21 c[dice() + dice()]++; 22 } 23 24 /* 度数分布をプリント */ 25 for ( i = 2; i <= 12; i++ ) { 26 printf("%d:%d\n", i, c[i]); 27 } 28 29 return 0; 30}

※ やりたいこと/やろうとしてることをコード内コメントに書こう。

投稿2020/06/08 18:31

編集2020/06/08 18:33
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

c.c

c

1#include <stdio.h> 2#include <stdlib.h> 3#include <time.h> 4 5// サイコロの個数 6#define N 2 7// サイコロの和の範囲 8#define SUM_MIN (N) 9#define SUM_MAX (N * 6) 10 11// サイコロを降る回数 12#define PLAY_COUNT 10000 13 14int main(void) { 15 int counts[SUM_MAX + 1]; 16 17 // srand(100); 18 srand(time(NULL)); 19 20 for (int i = 0; i <= SUM_MAX; i++) { 21 counts[i] = 0; 22 } 23 24 for ( int i = 0; i < PLAY_COUNT; i++ ) { 25 int sum = 0; 26 for (int j = 0; j < N; j++) { 27 sum += rand() % 6 + 1; 28 } 29 counts[sum]++; 30 } 31 32 for (int i = SUM_MIN; i <= SUM_MAX; i++ ) { 33 printf("%3d:%3d\n", i, counts[i]); 34 } 35 return 0; 36}

参考情報

  • C言語:乱数でサイコロの目が均等に出るか?

https://blog.19manabu.net/20180808/c%E8%A8%80%E8%AA%9E%EF%BC%9A%E4%B9%B1%E6%95%B0%E3%81%A7%E3%82%B5%E3%82%A4%E3%82%B3%E3%83%AD%E3%81%AE%E7%9B%AE%E3%81%8C%E5%9D%87%E7%AD%89%E3%81%AB%E5%87%BA%E3%82%8B%E3%81%8B%EF%BC%9F/

投稿2020/06/08 21:12

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問