おおきな数字に対して、素数リストを作るためのプログラム

はじめに 素数のリストを作りたい場合、エラトスネスの篩に基づいたプログラムはよく使われる。 しかし、ある程度(というか、かなり)大きな数を取り扱いたいと考えた場合、ある問題に直面する。 それは、「メモリ不足」だ。 例えば、1000までの素数リストを作る際、1~1000の数字が素数か素数でないか覚えておくための配列を宣言する必要がある。 C#であれば、以下のようなコードで、素数か素数でないか真偽を入れておく配列が宣言される。 bool[] n_list = new bool ; ※ネット上では、boolでなくintで宣言するプログラムを書いている人もいるが、メモリ的には、真偽の2パターンしか入らないboolの方がメモリの観点で得なはず。 数字が1000までなら、問題は起きないが、これが1000... 続きを読む

~プログラミングを勉強してみませんか?~

TechAcademy [テックアカデミー] 無料の体験講座が用意されているので、気軽に体験できます。

※私(サイト主)も無料体験講座を実際に受けてみました(→感想)

R_generator(対応プラットフォーム)

R_generatorとは 素人がプログラミングの勉強がてら作った無料の乱数生成器。 Unity(本来ならゲームを作るソフト)で無理やり作成。 作成した自分が言うのもなんだが、かなりしょぼいアプリ(ソフト)。 対応プラットフォーム アプリ(Androidのみ) ※アイコンをクリックすると、Google Playでの紹介ページに飛ぶ。 アプリを開くと、以下のような感じ 一応、英語に対応している。 日本語のページ(Google Play)→ https://play.google.com/store/apps/details?id=com.kaen.R_generator_Free&hl=ja 英語のページ(Google Play)→ https://play.google.com... 続きを読む

Web上で乱数生成するソフト(無料)を作ってみた

コンテンツ 乱数を生成したい場合は、矢印の先のリンクに飛んでください →「R_generator(WebGL版)」 リンク先に飛ぶと、次のようなページに飛ぶ。 ※立ち上がるのに少し時間がかかる(2~3秒) ※ソフトが大きく表示された場合は、適宜画面を縮小してください。ブラウザにもよるかもしれないが、Ctrl+(ホイールをぐりぐり回す)で簡単に画面が縮小できる。または、右下の赤枠で囲まれば部分をクリックしてフルスクリーンにしてください。   仕組み Unityというソフトを使用して、乱数生成器を作成した。 乱数の生成にはUnityにデフォルトのRandom.Range()を使用。 AndroidやiOSなどのアプリを作るときについでに作ったので、インターフェイスは、スマホ用になって... 続きを読む

プログラムでエラーが起きる原因の一覧

はじめに 備忘録もかねてどのようなパターンでプログラムがエラーを吐くかメモを残しておく。 ※私が今まで使ったことのあるプログラムの環境は「MinGW」と「Visual Studio」 単純な付け忘れ 文章の最後に「;」(カンマ)を付け忘れる。 「;」(カンマ)と「:」(コロン)を間違える。 「{}」(かっこ)がきちんと閉じていない。 ※「{」と「}」の数が同じでない ひらがなモードで空白(space)の挿入。 ※Ctrl+Fなどでプログラムの中に、余計な空白がないか検索できる ※「Visual Studio」には、インテリセンス機能がついているので、赤線で警告してくれるからすぐに気づける。 配列のミス 配列は非常にミスをしやすい部分である。 コンパイルがうまくいったのに、実行しよ... 続きを読む

儲かる賭け方が存在すると信じる人がなぜいるか?

はじめに 儲かる賭け方が存在するとどこかで信じている人がいる。 特に、マーチンゲール法(負けたら2倍の額を賭ける手法)は、見た目のトリックに騙される人が多い。 マーチンゲール法とは 負けたら賭ける金額を2倍にする手法。つまり賭ける金額を1,2,4,8,16……と増やしていく。 例えば、5連敗した後、勝利した場合。 負けた損失は、1+2+4+8+16で合計-31 勝利して得た利益は、32 合計すると+1の利益が出る。 このようにマーチンゲール法は、1度勝てば、いままでの損失をチャラにできる上に利益が得られる。 このことから、マーチンゲール法を必勝法と勘違いする人がいる。 たしかに、資金が無限に存在していれば、マーチンゲール法で利益をあげることができる。 だが、実際には有限の資金しかないので、... 続きを読む

ギャンブルの賭け方の種類をまとめてみた

はじめに この世には様々な賭け方が存在する。 この記事では、ギャンブルなど使われる賭け方の簡単な概要をまとめておく。 リンク先には、より詳しい説明と、私が行ったシミュレーション結果を載せている。 具体的には以下の賭け方を紹介する マーチンゲール法 グランマーチンゲール法 パーレー法(アンチマーチンゲール法) グランパーレー法 10%投資法 ダランベール法(ピラミッド法) 逆ダランベール法 ココモ法 モンテカルロ法 2in1法 グッドマン法(1235法) バーネット法(1326法) ウィナーズ投資法 イーストコーストプログレッション法 31システム マーチンゲール法 負けたら賭ける金額を2倍にする手法。つまり賭ける金額を1,2,4,8,16……と増やしていく。 勝ったら1に戻す。 どんなに負け... 続きを読む

誕生日シミュレーションソフト「Birthday_Simulator」(無料)

はじめに ※追記:完成したアプリの紹介→同じ誕生日のペアがどのくらいいるかシミュレーション プログラムの勉強の一環で作成した誕生日関連のシミュレーションソフト。無料で使用できる。 (ぶっちゃけ、素人が作ったソフトなのでお金をとっても仕方がない。その上、勉強すればすぐに作れるソフトなので……) 「R_generator」(乱数生成ソフト)に引き続いて、安っぽい素人ソフト第二弾目。 ※いずれ、アプリとして、移植したいと考え中。 作った手順はVisual Studio を使ってフリーソフトを作る(アイコンの調達)などを参照 「Birthday_Simulator」にできること(特徴) 誕生日にまつわる色々な問題をモンテカルロシミュレーションに基づいて、計算できる うるう年を含む場合と含まない... 続きを読む

エラトステネスの篩の素数判定プログラム(c#)

はじめに 素数のリストを可能な限り早く作ってくれるプログラムを作りたいと思って、最初はいくつか作って実行スピードを調べようと思った。 だが、いくつか作った結果、実行するタイミングで結構結果が変わる。 自分でもどのパターンが最速かよくわかっていない。 オーダーで2倍も違うものはないので、どれを使ってもいいと思う。 ※言語はC#。作った環境はVisual Studio 2015 。コンソールアプリケーションで作っている ※追記:バグが残っている可能性がある。 1:単純なエラトステネスのふるい   何も考えず、愚直にエラトステネスのふるいを実装した場合。 配列をラベル付けする数字が0から始まるのに対して、配列の中の数字は1から始まっていると考えている。その食い違いに解消のためにi+... 続きを読む

POV-Rayでアイコンを作ってみた(無料)

はじめに アイコンの自作するときにどうすればいいのだろうか? 私はいい方法を思いつかず、POV-Rayを使って画像ファイルを作ることにした。 POV-Rayとは、3Dのグラフィックを作ることができるソフト。無料で使用することが可能である。 ※アイコン専門のソフトではないが、うまく利用してアイコンを作ることができた。 絵心のない私にとって、非常に心強いソフトである。 ※POV-Rayのダウンロードサイト:http://www.povray.org/download/ 作ったアイコン こんな感じのアイコンを作った。球体の上に文字を書く場合とか便利。手作業だと、絶対にこんな画像は作れない。 作るときに使ったコード 先に言っておくが、このアイコンを作った人間はPOV-Rayを4~5時間程度しか... 続きを読む

Visual Studio を使ってフリーソフトを作る(アイコンの調達)

はじめに Visual Studio 2015を使って簡単なソフトを作ってみた。 (単純な乱数生成ソフト「R_generator」) ※「R_generator」の説明およびダウンロードは乱数生成「R_generator」(無料ソフト)を参照 その時の経験とかもろもろまとめている アイコン制作 アイコンは自分で頑張って作るか、フリーの素材からそのまま持ってくかの2通りが考えられる。 フリー素材のサイトはいくつかある。 icooon-mono:http://icooon-mono.com/ (※ぱっと見だと、モノクロで寂しく見えるが、ダウンロードする際、色は自分で自由に設定できるので問題ない) フリー素材の場合、自分のオリジナル性が出ないのがつらい。 そこで、自分で作ることが考えられる。も... 続きを読む