人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C言語 同じ数がないように乱数を作りたいです。
たとえば
srand((unsigned)time(NULL));
int ransu1=rand()%53;
int ransu2=rnad()%53;
int ransu3=rnad()%53;
int ransu4=rnad()%53;
int ransu5=rnad()%53;
としたとします。
このransu1から5までの数を全て違うようにしたいのですが、どのようにすればよいのでしょうか。
こんなものを作ってみましたが、意味がありませんでした。
void kaburicheck(){
srand((unsigned)time(NULL));
while(1){
if(ransu1==ransu2 || ransu1==ransu3 || ransu1==ransu4 || ransu1==ransu5 || ransu2==ransu3 || ransu2==ransu4 || ransu2==ransu5 || ransu3==ransu4 || ransu3==ransu5 || ransu4==ransu5){
ransu1=rand()%53;
ransu2=rand()%53;
ransu3=rand()%53;
ransu4=rand()%53;
ransu5=rand()%53;
}
else
break;
}
}

●質問者: まさ.lzh
●カテゴリ:コンピュータ 趣味・スポーツ
✍キーワード:C言語 Rand Time void 乱数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● deflation
●60ポイント ベストアンサー

こんな形ではどうでしょうか。

#define TRUE 1
#define FALSE 0

int tmp[6], i, j, flag;
srand((unsigned)time());

for (i = 1; i <= 5; i++) {
 flag = TRUE;
 while (flag) {
 flag = FALSE;
 tmp[i] = rand() % 53;
 for (j = 1; j < i; j++) {
 if (tmp[j] == tmp[i]) {
 flag = TRUE;
 break;
 }
 }
 }
}
int ransu1 = tmp[1];
int ransu2 = tmp[2];
int ransu3 = tmp[3];
int ransu4 = tmp[4];
int ransu5 = tmp[5];

2 ● うぃんど
●20ポイント

下記参照してみてください

http://www.programming-magic.com/20080824234424/


3 ● a-kuma3
●20ポイント

53 ってことは、トランプをイメージしてるんですよね。

山から5枚取る、というのを重複しない乱数5個、としたいのでしょうけど、

「山から5枚取る」というのを、そのまま実装する、というのではどうですか?


#include &lt;stdlib.h&gt;

const int N_SHUFFLE = 100;

/* カードをシャッフル */
void shuffle(int n_card, int card[]) {
 int i;
 for (i = 0 ; i < N_SHUFFLE ; ++i) {
 int j = rand() % n_card;
 int k = rand() % n_card;
 int tmp;
 tmp = card[j];
 card[j] = card[k];
 card[k] = tmp;
 }
}

int main(void) {
 const int N = 53;
 int cards[N];
 int i;

 srand(time());

 /* カードの準備 */
 for (i = 0 ; i < N ; ++i) {
 cards[i] = i;
 }

 /* 山をシャッフル */
 shuffle(N, cards);

 /* 上から5枚取る */
 printf("%d\n", cards[0]);
 printf("%d\n", cards[1]);
 printf("%d\n", cards[2]);
 printf("%d\n", cards[3]);
 printf("%d\n", cards[4]);

 return 0;
}
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ