プログラミング的な

プログラミング的ななにかです

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

rand()メモ2 最小値から最大値までの乱数

参考:[3]乱数の範囲を限定する

int GetRandom(int min,int max)
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
最小値+(int)((0?RAND_MAXまでのランダム値)*(最大値-最小値+1)/(1+RAND_MAX))
これで最小値から最大値までのランダムが出せるらしい。

最小値:0 最大値;10
0+(int)(100*11/32768) = 0.0335693359375
0+(int)(10000*11/32768) = 3.35693359375
0+(int)(20000*11/32768) = 6.7138671875
(RAND_MAX : VC++、BC++、LSI C-86 では 32767)

ほう、ちゃんと出てそうだけど・・・
どうしてランダム値に最大値から最小値を引いたものをかけてそれをRAND_MAXで割るんだろう。
スポンサーサイト

変数をファイルに保存メモ

変数をファイルに書き込みと読み込み
参考

void datasave()
{
FILE *fp;
fp=fopen("save.d", "wb"); //ファイル名、wb=バイナリで書き込み
fwrite(&men, sizeof(int), 1, fp); //書き込みたい変数名、型、文字数、ファイルポインタ
fclose(fp);
}

void dataload()
{
FILE *fp2;
fp2=fopen("save.d", "rb");
if(fp2 == NULL) return; //ファイル名のファイルがなかったら
fread(&men, sizeof(int), 1, fp2);
fclose(fp2);
}

rand()メモ

お久しぶりです。
パソコンがお亡くなりになったので、
しばらく留守にしていました。

rand()に関するメモ[C]
・RAND_MAX の値
VC++、BC++、LSI C-86 では 32767(0x7fff)
gcc では、 2147483647(0x7fffffff)

C FAQ 13の13.16より
ある範囲の整数からなる乱数はどうやったら生成することができるか。
A:
すぐに思い付く、
rand() % N
(これは0からN-1までの数を返そうとする)は乱数の質が低い。なぜな ら乱数発生器の多くで下位のビットは悲惨なほどランダムでない(質 問13.18を参照のこと)。よりよい方法は以下のようなものである。
(int)((double)rand() / ((double)RAND_MAX + 1) * N)
浮動小数を使うことが気になるのなら、以下の方法を試せばよい。
rand() / (RAND_MAX / N + 1)
どちらの方法もRAND_MAX(ANSIはで定義している)の値を知っ ていることが当然必要である。またどちらもNがRAND_MAXにくらべて 十分小さいことを仮定している。

・・・以下略

だめだなー
もっと勉強しよう。

作成したアプリケーション配布とWin32API

もやし農家物語ですが、
友達に動作確認のために送りやってもらいました。
好評でした。

 

Visual C++って普通にexeはかせると、
DLLを必要とするみたいで、
設定を変えてexeにしなきゃいけないみたいですね。
ここの作成したアプリケーション配布ってところを参考にしました。

 

今日はWin32APIの勉強をしていました。
結構ややこしいね、これ。
引き続きがんばります。

移行しました

今日はCを作るのに使っていたソフトを
CPad for Borland C++Compilerから
Microsoft Visual Studio 2008 Express Editionに移行しました。

CPadの手軽な感じが気に入ってたんですけど、
C言語勉強したけどゲーム作れないぞコラって人向けに
を参考に最近作ったもやし栽培ゲーム的なものを
GUIにしようと思ったからちょっとがんばりました。

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。