サイコロのプログラムをつかってやろうと思いましたがなんだか乱数をうまく利用できていない気がしました。
かぶりなく、公平に(ランダムに)チーム分け出来るプログラムを教えてください。
C言語で乱数を用いてn人をmチームに分ける
Re: C言語で乱数を用いてn人をmチームに分ける
うまくいかないプログラムを載せてください。そして、そう思った理由を述べてください。YYY さんが書きました:乱数をうまく利用できていない気がしました。
あまりにも、状況が不明でお答えしようがありません。
non
Re: C言語で乱数を用いてn人をmチームに分ける
「n人をmチームに分ける」のルールをもう少し詳しく教えてください。
mチームの人数はできるだけ均等でないといけませんか?それとも各チーム1人以上いれば何人でもいいですか?
など
mチームの人数はできるだけ均等でないといけませんか?それとも各チーム1人以上いれば何人でもいいですか?
など
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語で乱数を用いてn人をmチームに分ける
non>#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int saikoro(int n) {
return (int) (n * (rand()/32767.1)) + 1;
}
int main(void) {
int i;
srand((unsigned) time(NULL));
for (i = 1; i <= 100; i++)
printf("%4d", saikoro(6));
return 0;
}
サイコロのやつです。ここから、チーム分け、かぶりなしの数値を取り出す、という感じにしたいです。
#include <stdlib.h>
#include <time.h>
int saikoro(int n) {
return (int) (n * (rand()/32767.1)) + 1;
}
int main(void) {
int i;
srand((unsigned) time(NULL));
for (i = 1; i <= 100; i++)
printf("%4d", saikoro(6));
return 0;
}
サイコロのやつです。ここから、チーム分け、かぶりなしの数値を取り出す、という感じにしたいです。
Re: C言語で乱数を用いてn人をmチームに分ける
みけCAT>例えば、10人を3チーム分けるとなりますと、4:3:3、3:3:4、3:4:3のようにしなきゃいけないようです。余る人がいない場合は均等にチーム分けをする。こんな感じのプログラムになります。
Re: C言語で乱数を用いてn人をmチームに分ける
サイコロでの乱数の発生としてはこれで問題はないと思います。
RAND_MAXが32767という前提で。
それで、あなたはサイコロを使ってどのようにチーム分けしたいのですか。
プログラムとして、考えられなくても、実際だったらどうするのか、示してください。
RAND_MAXが32767という前提で。
それで、あなたはサイコロを使ってどのようにチーム分けしたいのですか。
プログラムとして、考えられなくても、実際だったらどうするのか、示してください。
non
Re: C言語で乱数を用いてn人をmチームに分ける
ということは、人から与えられた課題ということですね。それであれば、課題を正確に書いてください。YYY さんが書きました:4:3:3、3:3:4、3:4:3のようにしなきゃいけないようです。
実行例(何を入力して、どう出力するのか)も示してください。
non
Re: C言語で乱数を用いてn人をmチームに分ける
人を表す1~Nまでの整数をシャッフルして、最初から均等にチームの番号を割り振っていけばいいと思います。
もしくは均等に用意したチームの番号をシャッフルしてもいいです。
もしくは均等に用意したチームの番号をシャッフルしてもいいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語で乱数を用いてn人をmチームに分ける
non>与えられた課題は、乱数を用いて公平なチーム分けを行うプログラムを作成してください。
ex:人数・・・42 チーム・・・5
1:2 6 12 22 25 30 38 39
2:4 7 16 17 21 23 24 27 33
3:5 9 13 29 32 35 40 41
4:8 10 14 20 28 31 34 36 42
5:1 3 11 15 18 19 26 37
このようなヒントはいただけました
私はサイコロの目を人数にするという感じでつくろうかと思いました。もっと簡単に作れると思いますがいい案がありませんでした。
上記で示したプログラムではサイコロ同様の動きをしますが、このままだと表示される数にかぶりが現れてしまうことになり、混乱していました。
プログラミングは初心者なのですみません。
ex:人数・・・42 チーム・・・5
1:2 6 12 22 25 30 38 39
2:4 7 16 17 21 23 24 27 33
3:5 9 13 29 32 35 40 41
4:8 10 14 20 28 31 34 36 42
5:1 3 11 15 18 19 26 37
このようなヒントはいただけました
私はサイコロの目を人数にするという感じでつくろうかと思いました。もっと簡単に作れると思いますがいい案がありませんでした。
上記で示したプログラムではサイコロ同様の動きをしますが、このままだと表示される数にかぶりが現れてしまうことになり、混乱していました。
プログラミングは初心者なのですみません。