新規記事の投稿を行うことで、非表示にすることが可能です。
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以下の素数の判定
今回はここまでとします。読んでいただきありがとうございました。
このブログでは「プログラミング」をはじめ様々な分野の記事がありますので
是非そちらもよろしくお願いします。
また、次回お会いしましょう。
2020年11月03日
Java 100までの素数判定
どうも!「一人暮らしの様な理系」です。
最近、洗濯物を取り込み忘れて悲惨な目にあいました。
最近、洗濯物を取り込み忘れて悲惨な目にあいました。
季節のお洒落カラー満載!ピクトデザインコレクション
プログラミングを勉強していると誰でも一回は、「素数を判定せよ」的な課題にぶつかることが多いと
思います。
初学者にとっては難しく感じる人もいるかもしれません。
そんな方向けに今回は、「素数判定」をシンプルなコード(main関数の中身)で解説していきたいと思います。
問:
100以下の素数をすべて表示せよ。
まずは発想です。
発想: 素数は1と自分自身の数でしか割り切れない。
なので、ある整数 i は2 ~ i-1 で割り切れないとき、整数 i は素数である。
この発想を基にプログラミングを書いていくと、解答は以下のようになります。
解答
int flag=0;//
for(int i=2;i<=100;i++)
{
for(int j=2;j<i;j++)//多重ループを用いて i を固定して考えます
{
if(i%j ==0)//i を 2 ~ i-1 で割って、もし割り切れる数がある時はflag=1とする
{
flag=1;
}
}
if(flag == 0)//flagが1でないとき i は素数となる
{
System.out.println(i);//素数を表示
}
flag=0;//flagをリセット
}
この度プログラミングのアルゴリズムが質問できる、
「プログラミングアルゴリズム質問サイト」を作成しました!コピペしてアクセスしてください。
algorithmworldpro.com
正解だけのせるのもあれなので、私が過去に失敗した例を載せていきたいと思います。
3年間で1万人が学んだプログラミングスクールTECH::CAMPのオンライン説明会
失敗例1
for(int i=2;i<=100;i++)
{
for(int j=2;j
どこが失敗なのかご理解いただけるでしょうか。前半部分は合って入るのですが、
まずはif(i%j !=0)に注目してみましょう。
仮にi=6だったとします。そうするとjでのループは2,3,4,5で割ろうとします。
ここでj=5のときiがif文の条件を満たしてしまうため、
System.out.println(i);
が起動してしまいます。
更に厄介なことに、j「flagを使おう!」という発想は、この繰り返しの表示を防ごうという発想から来ています。
ではif(i%j !=0)の部分を修正しflagを追加して、繰り返しの表示を解決しましょう!注意しなくてはならないのは、flag=0;を
記述することです。これがなければ、素数以外の数も表示されてしまいます。
int flag=0
for(int i=2;i<=100;i++)
{
for(int j=2;j
となりプログラムが完成します。
今回はここまでとします。読んでいただきありがとうございました。
このブログでは「プログラミング」をはじめ様々な分野の記事がありますので
是非そちらもよろしくお願いします。
また、次回お会いしましょう。
この度プログラミングのアルゴリズムが質問できる、
「プログラミングアルゴリズム質問サイト」を作成しました!コピペしてアクセスしてください。
algorithmworldpro.com
2020年11月01日
日常の話 「鬼滅の刃」一期を全部見て、個人的な感想
どうも!「一人暮らしの様な理系」です。
もう11月ですね。
もう11月ですね。
最近話題になり、社会現象にもなっている「鬼滅の刃」!
映画も結構面白いという噂を聞き、Amazon Prime でアニメ一期を見てきました!
私は「戦闘系」のアニメをあまり見ないのですが、「鬼滅の刃」だけはハマりました。
個人的に戦闘系のアニメは、ストーリーや人間関係、目的が複雑になってしまいがちなイメージがありますが、
「鬼滅の刃」は目的がはっきりと分かりやすく更に登場人物の人間関係がシンプルなため、
初見でもとても楽しめました!
また作品中のCGがとても迫力あり、映画でも見ているのかというほど作品にのめり込めます。
「鬼滅の刃」では何種類もの敵が出てくるのですが、その敵一人一人の過去が描かれており物語をより一層重厚なものにしています。
敵はやられたら即退場ではなく、人間味がある場面を見せることで共感や感動を呼び、人々の心に届くような作品となっている部分でも大いに満足できました!
アニメを全部見終わった後
「よし、映画館で無限列車編を見よう!」
と思ったのですが、忘れてはいけない。
私の住んでいる場所は田舎のため、映画館が近くに一つもありません。
一番近くて30km先にあり、ちょうど山を一つ越えたところにあります。
話がそれてしまいましたが、まだ「鬼滅の刃」を見ていない方がいらっしゃいましたら是非視聴することを
お勧めします!
今回はここまでとします。読んでいただきありがとうございました。
このブログでは「プログラミング」をはじめ様々な分野の記事がありますので
是非そちらもよろしくお願いします。
また、次回お会いしましょう。
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 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++言語入門書
日別アーカイブ
2021年07月03日(1)
検索
最新コメント
写真ギャラリー
ファン
タグクラウド
カテゴリーアーカイブ
プロフィール
×
この広告は30日以上新しい記事の更新がないブログに表示されております。