ランダムに関して

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
海Sea
記事: 102
登録日時: 13年前
住所: 大阪
連絡を取る:

ランダムに関して

#1

投稿記事 by 海Sea » 11年前

いつも、お世話になっています。

さっそく申し訳ありませんが、今回の質問です。
配列の要素数に対して要素数を超えないように扱うために、
CPUがランダムでプレイヤーの持つ動的配列の要素数から上手く選ばせるには
どうすればいいでしょうか?

トランプなどのカードゲームで、
自分のカードを相手に取らせるのはいいのですが、
現在のカード数を動的配列で扱っているため、
ランダムで自分のカードを取らせる場合に上手く配列の要素を超えないように、
選ばせることができません。

つまり、
playerCard[20]
の場合は、0~19の数で、
playerCard[3]
の場合は、0~2の数で相手にランダムで選ばせたいのですが、
上手い方法が思いつかず悩んでいます。
もし、何かしらありましたら、ご教授頂ければ嬉しいです。
よろしくお願いします。

赤鬼
記事: 58
登録日時: 11年前

Re: ランダムに関して

#2

投稿記事 by 赤鬼 » 11年前

海Sea さんが書きました:いつも、お世話になっています。

さっそく申し訳ありませんが、今回の質問です。
配列の要素数に対して要素数を超えないように扱うために、
CPUがランダムでプレイヤーの持つ動的配列の要素数から上手く選ばせるには
どうすればいいでしょうか?

トランプなどのカードゲームで、
自分のカードを相手に取らせるのはいいのですが、
現在のカード数を動的配列で扱っているため、
ランダムで自分のカードを取らせる場合に上手く配列の要素を超えないように、
選ばせることができません。

つまり、
playerCard[20]
の場合は、0~19の数で、
playerCard[3]
の場合は、0~2の数で相手にランダムで選ばせたいのですが、
上手い方法が思いつかず悩んでいます。
もし、何かしらありましたら、ご教授頂ければ嬉しいです。
よろしくお願いします。
自分でどこまでやったのか欲しいところですが、簡単な例を挙げると

コード:

int num=rand();
playerCard[num%選ばせたい数(プレイヤーの持っている枚数)];

とかでできるとおもいます。
ただ、rand関数は疑似乱数を返し、その値は固定値ですので、srand関数や秒数入れたりいろいろ処理してください。

アバター
海Sea
記事: 102
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: ランダムに関して

#3

投稿記事 by 海Sea » 11年前

>赤鬼さん
自分でどこまでやったのか欲しいところですが、簡単な例を挙げると

コード:

int num=rand();
playerCard[num%選ばせたい数(プレイヤーの持っている枚数)];

とかでできるとおもいます。
ただ、rand関数は疑似乱数を返し、その値は固定値ですので、srand関数や秒数入れたりいろいろ処理してください。[/quote]

ありがとうございます。
とりあえずrand関数でプレイヤーの持っている数の値を
出そうとやってみてはいたんですが、
動作が上手くいかずという状態でした。
お答えを参考に作成してみます。

閉鎖

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