姉妹サイトリンク

【プログラミング】C/C++の特徴を活かした乱数生成プログラム

By ぐろこーん

今回は、C/C++の厄介な部分を活かす事の出来る乱数生成プログラムを作ってみました。

C/C++ の面倒くさい点

今回の記事に関しては、このC/C++の面倒くさい点を使います。

それが、メモリです。

C/C++の代名詞と言えるほど、C/C++にとっての大きな特徴ですね。

今回は、メモリを用いないと作れない乱数生成プログラムを思いついたので、紹介したいと思います。(もう大体予想つきますね)

メモリを使用した乱数生成プログラム

それでは、早速プログラムの紹介をしていこうと思います。

文字通り、このプログラムはメモリを使うため、C/C++でしか使えません。

メモリというのは、ある変数を格納しているメモリのアドレスを指しますよね。

つまり、少しでも何かのプログラムがOS内で動けば、直ぐに値が変わってしまいます。

その直ぐに変わってしまうという点が肝です。

それでは、実際に使ったソースコードを載せますね。

//乱数生成(第一引数には最小値、第二引数には最大値)
int randbm(int min, int max) {
	int *pint;
	int a = 1000;
	pint = &a;
	
	int value = (int)pint;
	
	int randnum = 0;

	for (int i = 1; i <= max; i++) {
		randnum += (value % i);
	}

	int randnum2 = (randnum % (max - min)) + min;

	return randnum2;
}

これはあくまで一例ですが、一つ気を付ける必要のある個所があります。

変数"value"は、メモリアドレスとして扱われているので、valueをそのまま利用しようとすると、コンパイル時に注意されます。

C/C++ は脆弱性のあるプログラムができやすいと評判なので、できるだけvalueは直接的には返り値などにしないようにしましょう。

以上、乱数生成プログラムについてでした。

最近人気な記事


プロフィールと自己紹介とその他もろもろ

【数学】exp(x)の解析接続を、独自のやり方で直接的に理解する PART 2

ブログを改善しようと思います

高校生が考えるブラック企業と解決策

【ぐろこーんの大学受験論】大学受験は団体戦ではなく個人戦

総括管理人のおすすめ


【数学】ラグランジュの補間を求める[長記事]

【数学】グラフの長さを求める公式を求めてみた PART 1

【数学】グラフの長さを求める公式を求めてみた PART 2

【数学】[分からない人向け]直線を表すベクトル、p = sa + tb (s + t = 1) って結局どういうイメージなのか

【数学】[分からない人向け]ベクトルの一次独立のイメージの仕方