サイコロの確率をそれぞれ決め、X回振ったときのサイコロの出目を出すにはどういった式を使えばいいですか???
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int rmax = 1000; // 発生させる乱数の最大値
int nDleng = 20; // サイコロ列の長さ
int loaded[] = { 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 2 };
int main(void) {
int i,j,n;
srand((unsigned)time(NULL)); // 乱数初期化
for (i = 0; i < nDleng; i++) {
n=rand??? ←←←←←←←←← ここの計算式がわからない
printf("(%3d回目 %d)\n", i + 1, n);
}
return 0;
}
計算式
Re: 計算式
課題ですか ? でしたら、課題を、一切略さずに、お願いします。
VTuber:
[香車]東上☆Aho(暎帆)☆海美
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
[香車]東上☆Aho(暎帆)☆海美
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
Re: 計算式
インチキなさいころがあり、1から5が出る確率が1/10,6は1/2である。x回振ったときのサイコロの出目列を出すプログラムを作成しなさい。
↑これが問題です。
このプログラムは自分で作った
↓
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int rmax = 1000; // 発生させる乱数の最大値
int nDleng = 20; // サイコロ列の長さ
int loaded[] = { 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 2 };
int main(void) {
int i,j,n;
srand((unsigned)time(NULL)); // 乱数初期化
for (i = 0; i < nDleng; i++) {
n=rand??? ←←←←←←←←← 多分ここにrandを使うサイコロの式が必要と思いました。
printf("(%3d回目 %d)\n", i + 1, n);
}
return 0;
}
何か修正があったら言ってください。
よろしくお願いします。
↑これが問題です。
このプログラムは自分で作った
↓
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int rmax = 1000; // 発生させる乱数の最大値
int nDleng = 20; // サイコロ列の長さ
int loaded[] = { 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 2 };
int main(void) {
int i,j,n;
srand((unsigned)time(NULL)); // 乱数初期化
for (i = 0; i < nDleng; i++) {
n=rand??? ←←←←←←←←← 多分ここにrandを使うサイコロの式が必要と思いました。
printf("(%3d回目 %d)\n", i + 1, n);
}
return 0;
}
何か修正があったら言ってください。
よろしくお願いします。
Re: 計算式
1/2は5/10なので、{1, 2, 3, 4, 5, 6, 6, 6, 6, 6}から等確率で1個選んで出すようにするといいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 計算式
まず「普通のサイコロ(1~6が同じ確率)」であれば問題なく実現できるのでしょうか?
↓できるなら…
(a)1~2が等確率で出る2面サイコロ
(b)1~5が等確率で出る5面サイコロ
も実現できると思うので,この2つを用いた以下の手順で課題文の確率を実現できると思います.
(1) まず,(a)の出目で分岐することで 「1/2の確率で6」を達成.
(2) (1)にて 6にならない側の目 が出た場合には,(b)を用いることで 1~5 のいずれかを結果とする.
↓できるなら…
(a)1~2が等確率で出る2面サイコロ
(b)1~5が等確率で出る5面サイコロ
も実現できると思うので,この2つを用いた以下の手順で課題文の確率を実現できると思います.
(1) まず,(a)の出目で分岐することで 「1/2の確率で6」を達成.
(2) (1)にて 6にならない側の目 が出た場合には,(b)を用いることで 1~5 のいずれかを結果とする.
Re: 計算式
int loaded[] だと、小数を保持できないので、要素はすべてゼロです。dshshh さんが書きました:今やってる{ 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 2 };でも変わらないと思うのですが
n=rand からどう式を組み立てればいいのかわからないです。
double にしましょう。n も。