ランダム抽選
2435 ワード
コンソールウィンドウで実施されるランダムチーム抽選.人数チーム人数人名.
入力を受信し、チームをランダムに割り当てて出力します.人数/チーム数
分流時の人員流出問題は解決されていない.
作成日が21.109.09の所要時間は5時間です.
人の長さの配列(num random)を生成し、重複しない整数値を割り当てます.(楽透記事を参照) name crew[num random[k]=>kは0からインクリメントし、2次元配列(crew 2)に入れます.
これにより,名前の重複がない2次元配列にうまく含まれる.
=>人数が10の場合、num random配列{4、8、1、5、3、0、7、2、9、6}がこのように作成されます.
ドアの周りを回っているので
1番目=name crew[4]
2番目=name crew[8]
3番目=name crew[1]...こうして値切った.
例えば、5人を2組に分ける場合
1チームの人3人5
2チームの人1人4
このように一人を漏らす.
crew 2の列長をdiv crewに設定すると,このような問題が発生し,多くのことを考慮したが解決しなかった.
宝くじ番号生成器を作成する際に使用する論理を利用して作成されます.
name crew[num random[k]<=この論理を実現する際、Googleも見つからず、難しすぎます.
彼は頭を絞って、その1時間4時間しか考えていなかったが、やっと思いついた.
問題はArrayList
入力を受信し、チームをランダムに割り当てて出力します.人数/チーム数
分流時の人員流出問題は解決されていない.
作成日が21.109.09の所要時間は5時間です.
ソースコード
package RandomSadari;
import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{ Random random = new Random();
Scanner sc = new Scanner(System.in);
int k=0;
System.out.println("사람수 입력:");
int num_crew = sc.nextInt(); //사람수 = num_crew 입력받기
System.out.println("팀수입력 :");
int crew = sc.nextInt(); //팀수 = crew 입력받기
int div_crew = num_crew/crew;
String[] name_crew = new String[num_crew]; // 사람이름 = name_crew배열 생성
int[] num_random = new int[num_crew]; //팀추첨 변수 = num_random 생성
String[][] crew2 = new String[crew][div_crew]; //나눈 팀원들을 담을 배열
for(int i=0;i<name_crew.length;i++) // 사람이름 입력받기
{ System.out.println(i+1 +"번째 사람이름 입력 :" );
name_crew[i] = sc.next();
}
for (int i = 0; i < num_random.length; i++)
{
num_random[i] = random.nextInt(num_crew); // 팀원 추첨할 변수 배열 생성- 중복없음
for(int j=0; j<i; j++)
{
if(num_random[i]==num_random[j]) {i--; break;}
}
}
for (int i = 0; i < crew2.length; i++)
{
for (int j = 0; j < crew2[i].length; j++)
{
crew2[i][j] = name_crew[num_random[k]];
k++;
}
}
for(int i=0;i<crew2.length;i++)
{ System.out.print(i+1+"팀 ");
System.out.println(Arrays.toString(crew2[i]));
}
sc.close();
}
}
論理的説明
これにより,名前の重複がない2次元配列にうまく含まれる.
=>人数が10の場合、num random配列{4、8、1、5、3、0、7、2、9、6}がこのように作成されます.
ドアの周りを回っているので
1番目=name crew[4]
2番目=name crew[8]
3番目=name crew[1]...こうして値切った.
実行画面
に質問
例えば、5人を2組に分ける場合
1チームの人3人5
2チームの人1人4
このように一人を漏らす.
crew 2の列長をdiv crewに設定すると,このような問題が発生し,多くのことを考慮したが解決しなかった.
ポスト
宝くじ番号生成器を作成する際に使用する論理を利用して作成されます.
name crew[num random[k]<=この論理を実現する際、Googleも見つからず、難しすぎます.
彼は頭を絞って、その1時間4時間しか考えていなかったが、やっと思いついた.
問題はArrayList
Reference
この問題について(ランダム抽選), 我々は、より多くの情報をここで見つけました https://velog.io/@kmh916/랜덤-팀-추첨テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol