この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
2020年11月14日
Java 初心者 配列のシャッフル(Collections shuffle なし)
どうも!「一人暮らしの様な理系」です。
今回はJavaScriptの配列のシャッフルについて、コードを書いてきたいと思います。
今回はJavaScriptの配列のシャッフルについて、コードを書いてきたいと思います。
問.配列を要素数の2倍シャッフルせよ
コード
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Shuffle {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Scanner stdIn=new Scanner(System.in);
Random rand=new Random();
System.out.print("要素数:");
int n=stdIn.nextInt();
int []a=new int[n];
for(int i=0;i<a.length;i++){
a[i]=rand.nextInt(10);
}
System.out.println("シャッフル前:"+Arrays.toString(a));
for(int i=0;i<2*a.length;i++)
{
int k=rand.nextInt(n);
if(k != i) {
int tmp=a[i%2];
a[i%2]=a[k];
a[k]=tmp;
}
}
System.out.println("シャッフル後:" + Arrays.toString(a));
stdIn.close();
}
}
コードの解説
System.out.println("シャッフル前:"+Arrays.toString(a));
までは誰でも行けると思います。問題はfor文の中身です。
まず問題の条件から、「要素数の二倍の数だけシャッフルせよ」とのことなのでfor文の序盤は
for(int i=0;i<2*a.length;i++)
となります。
次に、シャッフルをどうやってやるか発想法を考えます。
発想
シャッフルはランダムに入れ替えること。つまり乱数を使用するはず...
そして、その 乱数でランダムに要素を選べばよい!
というわけで
int k=rand.nextInt(n);
を追加します。
最後に 配列を入れ替えるという部分ですが、これは ソートの知識が使えそうです。
なので
if(k != i) {
int tmp=a[i%2];
a[i%2]=a[k];
a[k]=tmp;
}
if文は入れなくても大丈夫だと思います。
終わりに
いかがでしたでしょうか!どんな大きなことも、一個一個分解してしまえばかなり取り組みやすくなります。
ちなみに前回は、
「100以下の素数の判定」について記事を書きました。興味がある方は是非!!!
JavaScript100以下の素数の判定
今回はここまでとします。読んでいただきありがとうございました。
このブログでは「プログラミング」をはじめ様々な分野の記事がありますので
是非そちらもよろしくお願いします。
また、次回お会いしましょう。
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
2 | 3 | 4 | 5 | 6 | 7 | |
8
|
9 | 10 | 11 | 12 | 13 | 14 |
15
|
16 | 17 | 18 | 19 | 20 | 21 |
22
|
23 | 24 | 25 | 26 | 27 | 28 |
29
|
30 |
最新記事
(07/03) プログラミングのアルゴリズム質問サイトを作成しました!
(11/14) Java 初心者 配列のシャッフル(Collections shuffle なし)
(11/03) Java 100までの素数判定
(11/01) 日常の話 「鬼滅の刃」一期を全部見て、個人的な感想
(10/27) 日常の話 プログラミング +少しだけオススメC言語C++言語入門書
(11/14) Java 初心者 配列のシャッフル(Collections shuffle なし)
(11/03) Java 100までの素数判定
(11/01) 日常の話 「鬼滅の刃」一期を全部見て、個人的な感想
(10/27) 日常の話 プログラミング +少しだけオススメC言語C++言語入門書
日別アーカイブ
月別アーカイブ
検索
最新コメント
写真ギャラリー
ファン
タグクラウド
カテゴリーアーカイブ
プロフィール
×
この広告は30日以上新しい記事の更新がないブログに表示されております。