itsukichang

フロントエンドが得意なエンジニア.ダーツと旅行とギターが好き

くだらない間違い

乱数作ってる時になんか問題が起きた。
srandに現在時刻与えて、範囲決めるために変数n読み込んで、発生した乱数を(n + 1)で割った数を出してたんですが、なぜか普通の32767以下の乱数が表示されてしまた。

作ってたプログラムのソース出したらややこしいので、問題の部分だけ抜き出してソース書いてみました。大体こんな感じ。

#include <ctime>
#include <cstdlib>
#include <iostream>

using namespace std;

int main(){	
	srand(time(NULL));
	
	int n,random;
	random = rand() % (n + 1);

	cout << "ランダムな整数を作成します。範囲を決めてください。(0以上)";
	cin >> n;
	cout << "作成された数は" << random << "です。\n";
	
	return 0;
}

これが問題のコード。

ググっても今一答えがでないので、色々試した結果が、

***略***

int n,random;

cout << "ランダムな整数を作成します。範囲を決めてください。(0以上)";
cin >> n;
random = rand() % (n + 1);

********

変数randomの値設定の位置がおかしかった・・・!!
なんという初心者。

別に乱数の記事にもならず、
超初歩的な間違いを晒して、落ちもなく終わり。



こんなことに30分くらい悩んでたってネタとして伝えたかったんです。ごめんなさい/(^o^)\