簡単なサイコロの確率計算

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ねこまねき

簡単なサイコロの確率計算

#1

投稿記事 by ねこまねき » 15年前

初めて投稿させていただきます。
下記のプログラムをDXを使って書いてみたのですが
どうしても、数字が重なって表示されてしまいます。
原因がわからないので質問させていだきました。
質問の仕方もこれでいいのか自信がないレベルなのですが
よろしくお願いします。

OS:WindowsXP HomeEdition
VisualC++2008ExpressEdition

#include "DxLib.h"

char Key[256];


int MouseInput,White,saikoro,i;
int kaku[5],saiko[5];
int sousu,gyou=15;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理



SetMouseDispFlag( TRUE ) ;
SetDrawScreen( DX_SCREEN_BACK ); //裏画面に設定
MouseInput = GetMouseInput() ;
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得



/////////////////////////////////////////////////////////////////

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE] && (MouseInput & MOUSE_INPUT_RIGHT ) == 0){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されていない


// マウスの入力を得る
MouseInput = GetMouseInput() ;

saikoro=GetRand(6)+1;

sousu++;//サイコロの振った回数


for(i=0;i<6;i++){
if(saikoro==i+1){saiko++;}
kaku=saiko/sousu;//
}

/////////////


DrawString(0,0, "右クリックで終わります6", White);//文字列表示
DrawFormatString(50, 50, White , "サイコロの出た数字%d(1から6まで)", saikoro);//文字列表示
for( int me = 1; me < 7; me ++ ){
DrawFormatString(50, gyou*me+65, White , "%dが出た回数%d回", me,saiko[me-1]);//文字列表示
DrawFormatString(200, gyou*me+65, White , "統計%d%", kaku[me-1]);//文字列表示
}
DrawFormatString(50,gyou*8+65 , White , "サイコロを振った回数%d", sousu);//文字列表示

ScreenFlip();//裏画面を表画面に反映

}

DxLib_End();
return 0;
} 画像

ドラ

Re:簡単なサイコロの確率計算

#2

投稿記事 by ドラ » 15年前

>どうしても、数字が重なって表示されてしまいます。
数字が重なるとか言う前に、バグっていますよ?

>int kaku[5],saiko[5];
配列の要素数が足りません。

>saikoro=GetRand(6)+1;
個人的にとても気持ち悪いのですが、DXライブラリのGetRand()は
GetRand(6)だと、0~6の値を返して来ます。
と言う事でここもおかしいですね。

>kaku=saiko/sousu;
確率を%単位で出したいなら先に100倍しておかないとダメですね。

ねこまねき

Re:簡単なサイコロの確率計算

#3

投稿記事 by ねこまねき » 15年前

相談して良かったです。
初心者なので、質問するのも緊張しました。
助かりました、ありがとうございました。


> >どうしても、数字が重なって表示されてしまいます。
> 数字が重なるとか言う前に、バグっていますよ?
>
> >int kaku[5],saiko[5];
> 配列の要素数が足りません。
>
> >saikoro=GetRand(6)+1;
> 個人的にとても気持ち悪いのですが、DXライブラリのGetRand()は
> GetRand(6)だと、0~6の値を返して来ます。
> と言う事でここもおかしいですね。
>
> >kaku=saiko/sousu;
> 確率を%単位で出したいなら先に100倍しておかないとダメですね。
>
>

閉鎖

“C言語何でも質問掲示板” へ戻る