カードを探す処理

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

カードを探す処理

#1

投稿記事 by さぶかるちゃ » 14年前

http://www.bj-10jqka.com/programs/C/index.html
上のwebページ(ブラックジャックを作成するもの)で、ページ内にある[未使用カードを探す処理]を行うところで

コード:

do {
		index = (int)((float)imax * rand() / (RAND_MAX + 1.0));
	} while (deck[index][0] == '\0');
の部分のindex = (int)((float)imax * rand() / (RAND_MAX + 1.0));がわかりません。
回答お願いします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: カードを探す処理

#2

投稿記事 by h2so5 » 14年前

その行は、indexに0以上imax未満のランダムな整数を代入しています。

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: カードを探す処理

#3

投稿記事 by bitter_fox » 14年前

さぶかるちゃ さんが書きました:

コード:

do {
		index = (int)((float)imax * rand() / (RAND_MAX + 1.0));
	} while (deck[index][0] == '\0');
まず、rand関数は0~RAND_MAXまでの値を返します。
で、それをRAND_MAX+1.0で割ると、確実に(0 <= x < 1)の範囲に収まりますね?
さらにその値に、imaxを掛けると(0 <= x < imax)の範囲になります。
これをdeckの添え字に使うことでランダムに調べることができます。

さぶかるちゃ

Re: カードを探す処理

#4

投稿記事 by さぶかるちゃ » 14年前

ご回答ありがとうございました^^

閉鎖

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