タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

C++とprogrammingとCに関するkenjiro_nのブックマーク (6)

  • いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記

    私はつい最近まで勘違いしていました。 ここのページに書いてあるような方法で、一様分布する整数が得られると。 int random(int n) { return (int)(( rand() / (RAND_MAX + 1.0) ) * n); } この方法、一見すると実に一様分布が得られそうに見えるんですよね。 どういう思考回路を通っているかというのを自己分析すると、次のような感じです。 1. rand() では 0〜RAND_MAX のランダムな整数が得られる。 2. それを RAND_MAX + 1 で割ると、[0, 1) に一様分布する実数が得られる。 3. [0, 1) の一様な実数を n 倍して小数点以下を切り捨てたら、0 から n-1 に一様分布する整数が得られる。 これの罠なところは、1 と(特に)3 が正しいというところだと思います。 ただ、2 がダウト。 思いっきりダウ

    いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記
  • C++ - C++ における関数スタイルのプログラミング

    図 6 を見ると、ラムダ式で変数と値を取得する方法を、プログラマが完全に制御できることがわかります。しかし、これによって値を使用するという考え方は保持できますが、複雑なデータ構造を値として効率よく操作することには役に立ちません。 不変データ型 不足しているのは、一部の関数型プログラミング言語にあるような効率的な不変データ構造です。このような言語では、不変データ構造は共通データを共有するため、非常に大きくなった場合でも、効率性を高めることができます。データを共有するデータ構造を C++ で作成するのは簡単です。データを動的に割り当てるだけで、各データ構造がそのデータへのポインターを保持します。残念ながら、共有変数の有効期間を管理するのが難しくなります (ガベージ コレクターが普及したのはこのためです)。さいわい、C++ 11 には、std::shared_ptr テンプレート クラスで共有変

    C++ - C++ における関数スタイルのプログラミング
  • 2NT -無料ブログ 無料ホームページ 等-

  • プログラミング言語Cについて知ろう

    プログラミング言語の基となる「C」。正しい文法や作法を身に付けよう。Cには確かに学ぶだけの価値がある(編集部) プログラミング言語Cは開発の仕事に役立つ人気のあるプログラミング言語です。 この連載では、Cでのソフトウェア開発をこれから始めようという方や、使った経験はあるが勉強し直したいという方のために、基をきちんと押さえながら勉強できるような解説をしていきます。 なるべく正しい文法や作法を身に付けていただくためにJIS規格を基に解説しますが、それだけにこだわらず実際の開発で役に立つことを分かりやすくお伝えしていきます。 Cの成り立ちと規格 まずは、Cの成り立ちと規格について知っておきましょう。ちょっと堅苦しい感じがするかもしれませんが、歴史を知っているとなぜこういう書き方をするのか、こういった機能があるのかといったことが分かります。また、規格を知っているとプログラミングをしていて何か

    プログラミング言語Cについて知ろう
  • vsnprintfを使えば安心というものでもないという例:プログラマー社長のブログ:オルタナティブ・ブログ

    今日はバリバリC言語の話題です。C言語はバッファオーバーフローの問題が発生しやすく、初心者は使うな、とか、そもそも今時使うな、とか言われていますが、性能要求が高い場合や組み込みなど環境制限が厳しい場合などにはまだまだ大活躍です。さすがにWEBシステムの大規模なものなどで使うケースはほとんどないでしょうけれど。 そんなC言語も、一応バッファオーバーフローしにくいようなライブラリを使うようにいわれています。たとえば、sprintf(),vsprintf()などの代わりに、snprintf(),vsnprintf()を使うという感じです。'n'がつく方は、格納先のサイズを指定できるのでバッファオーバーフローを防ぎやすいのです。 ところが、あるシステムでこの部分でメモリーアクセス違反で死ぬ現象が発生しました。デバッガで確認すると、vsnprintf()で死んでます。格納先バッファのサイズなどは問題

    vsnprintfを使えば安心というものでもないという例:プログラマー社長のブログ:オルタナティブ・ブログ
  • Visual C++ 2005におけるscanf()に対する警告を抑制する方法

    以前、「scanf()のワーニング(Visual C++ 2005)」で書いたことなんですが、なんか微妙にヒット数があるみたいなので適当に書き直してみる。 偶には微妙にためになることも書いておかないとね・・・ 例えば次のような簡単なコードを書いてみたとします。 /****************************************************************************** * scanf_example.c *****************************************************************************/ #include <stdio.h> int main( void ) { int i; printf( "整数値を入力してください > " ); scanf( "%d", &i );

  • 1