-5から5の範囲のランダムな数を取得したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
COFE
記事: 97
登録日時: 14年前

-5から5の範囲のランダムな数を取得したい

#1

投稿記事 by COFE » 14年前

DxLibのGetRand関数を使って-5から5までランダムな値を取得したいです
しかし、入門書などには0~xでの求め方などは書いてありますが、(-x)~xこういう数の求め方は書いてありませんでした

今考えているのは、0~5までの値を取得し、ランダムで符号を変えるというやり方です

コード:

float random1 = GetRand(5);
int random2 = GetRand(1);
random1 = random2 ? -random1 : random1;
しかし処理がうだうだと長くあまりスマートではありません

他に何かいいやり方はないでしょうか?
よろしくお願いします

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: -5から5の範囲のランダムな数を取得したい

#2

投稿記事 by h2so5 » 14年前

int random1 = GetRand(10) - 5;

で得られますよ。

box
記事: 2002
登録日時: 14年前

Re: -5から5の範囲のランダムな数を取得したい

#3

投稿記事 by box » 14年前

COFE さんが書きました:DxLibのGetRand関数を使って-5から5までランダムな値を取得したいです
しかし、入門書などには0~xでの求め方などは書いてありますが、(-x)~xこういう数の求め方は書いてありませんでした
0~10の範囲の乱数を求めて、5を引く、という方法もあると思います。
きれいな方法かどうかは存じませんけれど。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 14年前

Re: -5から5の範囲のランダムな数を取得したい

#4

投稿記事 by box » 14年前

汎用性を求めるならば、こういう関数を書いてみる手もあると思います。
動作確認はしてませんけれど。

コード:

// -nからnまでの乱数を返す
int getRandom(int n)
{
    return GetRand(2*n) - n;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

COFE
記事: 97
登録日時: 14年前

Re: -5から5の範囲のランダムな数を取得したい

#5

投稿記事 by COFE » 14年前

この発想はなかった……
boxさんh2so5さんありがとうございました
boxさんの作ってくれた関数を早速使います

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: -5から5の範囲のランダムな数を取得したい

#6

投稿記事 by Dixq (管理人) » 14年前

特定の範囲の乱数を出すって、ゲーム作ってると最初に思う疑問ですよね。
ところで、float型の乱数もこの先必要になってくるとおもいますがそんな時の為に

float GetRandF( float val ){
return (float)GetRand(1000000)/1000000.f*val;
}

こんな関数も用意しておくと良いかと思います。
汎用的に使えそうな関数群を自分でまとめておいて、簡易ライブラリ化しておくと便利ですよ。

アバター
tk-xleader
記事: 158
登録日時: 14年前
連絡を取る:

Re: -5から5の範囲のランダムな数を取得したい

#7

投稿記事 by tk-xleader » 14年前

浮動小数点数の乱数を生成する高速な方法として、こんなのがあります。
http://marupeke296.com/TIPS_No16_flaotrandom.html
参考までに…

COFE
記事: 97
登録日時: 14年前

Re: -5から5の範囲のランダムな数を取得したい

#8

投稿記事 by COFE » 14年前

>Dixqさん

今日作っててちょうど小数はどうしようか悩んでいたところでした、ありがとうございます
ライブラリを自分で作ってみるのも面白そうですね、またやってみます


>tkmakwins15さん

前の質問覚えてくださってたんですか!
リンクを見ましたがやっぱり私の頭では一回で内容を知るのは無理でしたw
何度も読んで理解します
ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る