A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
(「ブラックジャック」をしたことないので、的はずれになるかも・・)
#1補>乱数を発生させて
#2補>プログラミングについて詳しくありませんのでrandで
rand で「どのように」4組のエースからキングまでを作ろうと考えていますか。
もし思いついていないとしたら、1例として
http://oshiete.goo.ne.jp/qa/6382508.html の質問者のソースが参考になるかと。
ここでは、0-19の数字を重複無く作成し、シャッフルしています。
今回も、エースは4枚、・・キングも4枚と過不足なく作成し、《並び》を「乱数で管理」する必要があることから、このアルゴリズムが参考になるかと・・。
そのプログラム例
for( i = 0; i < ( 13 * 4 ); i++ ){ // 52ケ整列
iVal = ( i % 13 ) + 1; // 「エース」から「キング」まで( 1 - 13 )
if( iVal > 10 ) iVal = 10; // 絵札は、10 点?
iCardVal[ i ] = iVal;
}
for( i = ( 13 * 4 - 1 ); i > 1; i-- ){ // シャッフル
iBasyo = rand() % ( i + 1 );
iVal = iCardVal[ i ];
iCardVal[ i ] = iCardVal[ iBasyo ];
iCardVal[ iBasyo ] = iVal;
}
これで、1から9までの数字が各4ケ、10が16ケの計52ケがランダムに入った配列ができます。
#2補>自動でカードを16以下はもう1枚引き、17以上になったら引くのをやめるという条件文がわからず、
~まで繰り返す、というのは、while 文が適していると思います。
while( iA < 17 ){
iA += iCardVal[ nn ];
nn++;
}
while( iB < 17 ){
iB += iCardVal[ nn ];
nn++;
}
なお、1(エース)を、手持ち点に応じて 11 点にしたり、1 点のままにする必要がある?ならば、
その判断をする関数を用意し、
iA += AceCard( iA, iCardVal[ nn ] ); とすればいいと思います。
ちなみに、関数は、
int AceCard( int iPoint, int iVal )
{
if( 1 == iVal ){ // エースカード
if( iPoint < 11 ) return( 11 );
}
return( iVal );
}
になろうかと。
>簡単なソースでもよろしいので教えてください。
あとは、超簡単な部分を組み合わせるだけ・・。
(・シャッフル)
・はじめの2枚の配布
(・16点以下はもう1枚引き、17点以上になったら引くのをやめる)
・22点以上になった場合の処理
・勝ち負け判定
・勝ち負けカウント
・3万回ループ
・結果出力
★なお、1ゲームあたり配られた枚数頻度(母数3万)を求めるのも、いいかも。
11枚が最大かなぁ?
No.3
- 回答日時:
これでは条件が足りなさすぎ. ブラックジャックのルールそのものに関してもたとえば「A, 6」のときどうするのかという問題があるし, もっと大きく見ると
・デッキを何セット用意するのか (カジノでは 6セットとか 8セットとか使うこともある)
・いつ次のデッキに変えるのか (6セットとか 8セットとか用意しても, それをすべて使うわけじゃない)
などが指定されていない.
No.2
- 回答日時:
1回分はできるのですか?
それをループさせるだけですが。
標準関数のrandは統計学的な特性がよくないので、乱数発生器は別なものを使った方がよいでしょう。
> 何回も何回も試合を自動で繰り返すモンテカルロシミュレーションを作ることは出来ますか?
できるから、シミュレーションとして成立つのですが。
この回答への補足
自動でカードを16以下はもう1枚引き、17以上になったら引くのをやめるという条件文がわからず、まだ1回も回せておりません。また、プログラミングについて詳しくありませんのでrandで作ろうと考えております。少しでもよろしいのでヒントをください。
補足日時:2011/01/26 07:15お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- Perl perlのプログラミング 部分入れ替えの方法 1 2022/10/11 22:26
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
- Windows 10 Windows Updateの更新ができない場合に初期化 3 2023/01/18 20:00
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
- C言語・C++・C# パーレー法のプログラムについて 3 2022/09/04 19:56
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
break文でループを一気に抜ける...
-
ループを途中で抜けたいのですが。
-
C言語forループが完結した場合...
-
エクセルでC言語のfor文と同じ...
-
if文の中にfor文なのか、for文...
-
エクセルVBAで Do While (1)って?
-
C言語 数字を削除する関数
-
Cプログラムが終了しない
-
ループの特定入力終了
-
Excel VBAで年度をまたぐ期間の...
-
アルゴリズムです!四つの数字...
-
整定時間
-
For文の終了値を関数にしても問...
-
C言語のプログラムみてください...
-
入力した文字列から母音だけを...
-
猫でもわかる、がわかりません。
-
C言語、whileループを抜け出す...
-
既約分数の表示プログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
break文でループを一気に抜ける...
-
エクセルでC言語のfor文と同じ...
-
ループを途中で抜けたいのですが。
-
エクセルVBAで Do While (1)って?
-
C言語forループが完結した場合...
-
For文の終了値を関数にしても問...
-
excel VBA if文について
-
入力した数値を倍々するプログラム
-
入力した文字列から母音だけを...
-
Excel VBAで年度をまたぐ期間の...
-
if文の中にfor文なのか、for文...
-
C言語、whileループを抜け出す...
-
for文while文の無限ループの違...
-
UWSCにてある一定の動作を無限...
-
__asm int 3でのブレイクポイン...
-
PIC のプログラムについて ど...
-
他言語で言うcontinue文
-
Cプログラムが終了しない
-
プログラムで関数は使わない方...
おすすめ情報