C/C++言語でRPGを作ってみるスレ
■ このスレッドは過去ログ倉庫に格納されています
0225C++に移植しました
2005/05/18(水) 21:08:55rand のマニュアルを見て欲しいけど、生成する乱数のビットの下位ビットはランダム性が劣るため、
割算の余りを求めるのではなく、上位ビットを使うために生成範囲を求めたい範囲に縮小する
サンプルプログラムが書かれているはずです。
あと、先日移植する時に気づいたのですが、乱数といえば random() だと思って調べたら
ANSI C++ では cstdlib には rand と srand が定義されているだけでした。
この点を考慮したプログラムは次のようになります(特定の回数だけ乱数列をずらすのは省いてあります)
#include <iostream>
#include <cstdlib>
#include <ctime>
int r_gen(int range){
return (int) ((double)range*std::rand()/(RAND_MAX+1.0));
}
void Randomize(){
std::srand(std::time(NULL));
}
int Dice(int Cicle,int Face,int P){
int Total=0;
for(int i=0;i<Cicle;i++){
Total += r_gen(Face)+1;
}
return Total + P;
}
int main(void)
{ Randomize();
for(int i=0;i<100;i++){
std::cout<<Dice(3,6,0)<<std::endl;
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています