• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:すごろくに使用するサイコロ)

すごろくに使用するサイコロの目生成プログラム

このQ&Aのポイント
  • すごろくに使用するサイコロの目を生成するプログラムを作成しましょう。ランダムな1から6の整数を表示するだけでなく、特定のルールに従った表示も行いましょう。
  • サイコロの目が1の場合には「mouikkai」と表示し、目が4の場合には「ikkai yasumi」と表示します。
  • このプログラムを使って、20回のサイコロの結果を表示してみましょう。

質問者が選んだベストアンサー

  • ベストアンサー
  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

もう一回になったときや、一回休みになったとき、駒の位置はどう動くのでしょう。その辺のルールがあやふやですね。 #include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { int n, i, pos; pos = 0; srand(time(NULL)); for (i = 0; i < 20; i++) { n = (int) (6.0 * rand() / RAND_MAX) + 1; printf("%4d: saikoro = %d, pos = %d\n", i, n, pos); switch (n) { case 1: printf("mouikkai\n"); pos++; i--; break; case 4: printf("ikkaiyasumi\n"); pos += 4; i++; break; default: pos += n; } } printf("last pos = %d\n", pos); return 0; }

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

まずは 32767.1 がどこから出てきたのかを補足にどうぞ。 また、おきまりの指摘として srand() で初期化しましょう。

destinatio
質問者

補足

srandを使ってするべきでした。 また(double)rand()/32767.0とすると 0から1.0の実数乱数を作るために使用しました。 #include <stdio.h> #include <stdlib.h> #include<time.h> void main (void) /*サイコロ*/ { int i,x,iseed; iseed=(int)time(NULL); srand(iseed); for(i=0;i<20;i++){ x=(int)(6*((double)rand()/((double)RAND_MAX+1))+1); printf("%d\n",x); switch(x){ case 1: printf("mou ikkaix=%d\n",x); break; case 4: printf("ikkai yasumix=%d\n",x); break; } } } 長いですけどできました。 お騒がせしまして申し訳ございません。

関連するQ&A