Profile
HN:gp-hss
職業:高校生
趣味:3DCG
言語:C全般
環境:VC++ 2008 EE
3DCG:Softimage Mod Tool
自己紹介:
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。
Began study since 2009/8/21
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。
Began study since 2009/8/21
Entry
(07/31)
(06/13)
(02/22)
(02/21)
(02/20)
Latest TB
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
test_create_rand_val(.c)
test_create_rand_val(.exe)
Part.2 のプログラムをさらに改良しています。
論理上不要な部分を無くし、さらに乱数を求める処理を 100 分の 1 にまでスピードアップさせました。
精度は 9 割維持しています。
ですが、指定した乱数を生成する範囲が狭すぎると一定の間隔で同じ数値の乱数が生成されてしまいますし、逆に範囲が広いと同じような数値の乱数ばかりが生成されてしまいますし、
外部ファイルを使わなくても済むようにしたので、一番最初に返される乱数の値がかぶってしまう確立が高くなってしまっています。
まぁこれらの問題はものすごくがんばれば解決できると思うので Part.4 では完成形を披露できたらなと思っています。
このソースの解説を簡単にしておきましょう。
といってもまぁ解説するところなんてほとんどありませんよね・・・。
まずは、自作の乱数を求める関数を header にしたものをインクルードしています。
そして、僕のつくった乱数を生成する関数は、まず最初に必ず乱数をどの範囲から生成するか指定しなければいけません。
それが、
crv_scope()
です。
第一引数に範囲の始めの値、第二引数に範囲の終わりの値を渡します。
ちなみに、範囲は 0 ~ 1000000 までです。
負の乱数にしたければあとで符号変換してやればいいだけです。
範囲はプログラム中どこででも変えることができます。
次に、その範囲内で乱数を生成する関数である
CRV()
ですが、こいつは呼び出すごとに指定した範囲内において乱数を返します。
また、範囲を指定する関数である crv_scope() を先に呼び出していない場合は -1 を返します。
あとは、もう一度乱数を生成するかどうかを聞いて、もう一度する場合は do文 によって同じ処理をさせています。
どうでしたか?
乱数を作り出すプログラムはいろいろな作り方があるのでしょうが、簡単な理屈でもいいので自分で作ってみるというのが重要ですよね。
ではまた今度。
PR