ページ 1 / 1
-5から5の範囲のランダムな数を取得したい
Posted: 2011年8月29日(月) 22:29
by COFE
DxLibのGetRand関数を使って-5から5までランダムな値を取得したいです
しかし、入門書などには0~xでの求め方などは書いてありますが、(-x)~xこういう数の求め方は書いてありませんでした
今考えているのは、0~5までの値を取得し、ランダムで符号を変えるというやり方です
コード:
float random1 = GetRand(5);
int random2 = GetRand(1);
random1 = random2 ? -random1 : random1;
しかし処理がうだうだと長くあまりスマートではありません
他に何かいいやり方はないでしょうか?
よろしくお願いします
Re: -5から5の範囲のランダムな数を取得したい
Posted: 2011年8月29日(月) 22:45
by h2so5
int random1 = GetRand(10) - 5;
で得られますよ。
Re: -5から5の範囲のランダムな数を取得したい
Posted: 2011年8月29日(月) 22:45
by box
COFE さんが書きました:DxLibのGetRand関数を使って-5から5までランダムな値を取得したいです
しかし、入門書などには0~xでの求め方などは書いてありますが、(-x)~xこういう数の求め方は書いてありませんでした
0~10の範囲の乱数を求めて、5を引く、という方法もあると思います。
きれいな方法かどうかは存じませんけれど。
Re: -5から5の範囲のランダムな数を取得したい
Posted: 2011年8月29日(月) 22:58
by box
汎用性を求めるならば、こういう関数を書いてみる手もあると思います。
動作確認はしてませんけれど。
コード:
// -nからnまでの乱数を返す
int getRandom(int n)
{
return GetRand(2*n) - n;
}
Re: -5から5の範囲のランダムな数を取得したい
Posted: 2011年8月29日(月) 23:32
by COFE
この発想はなかった……
boxさんh2so5さんありがとうございました
boxさんの作ってくれた関数を早速使います
Re: -5から5の範囲のランダムな数を取得したい
Posted: 2011年8月29日(月) 23:48
by Dixq (管理人)
特定の範囲の乱数を出すって、ゲーム作ってると最初に思う疑問ですよね。
ところで、float型の乱数もこの先必要になってくるとおもいますがそんな時の為に
float GetRandF( float val ){
return (float)GetRand(1000000)/1000000.f*val;
}
こんな関数も用意しておくと良いかと思います。
汎用的に使えそうな関数群を自分でまとめておいて、簡易ライブラリ化しておくと便利ですよ。
Re: -5から5の範囲のランダムな数を取得したい
Posted: 2011年8月30日(火) 20:30
by tk-xleader
Re: -5から5の範囲のランダムな数を取得したい
Posted: 2011年8月30日(火) 21:11
by COFE
>Dixqさん
今日作っててちょうど小数はどうしようか悩んでいたところでした、ありがとうございます
ライブラリを自分で作ってみるのも面白そうですね、またやってみます
>tkmakwins15さん
前の質問覚えてくださってたんですか!
リンクを見ましたがやっぱり私の頭では一回で内容を知るのは無理でしたw
何度も読んで理解します
ありがとうございました