C++で乱数を生成する方法【srand()とrand()の使い方を解説】
C++を使って乱数を生成する方法を解説します。ここでは、0から指定した値までの範囲で乱数を生成します(このプログラムでは最大値を100に設定しています)。
この処理にはsrand()関数を使用します。srand()はC標準ライブラリに含まれる関数で、void srand(unsigned int seed)という形式で定義されており、rand関数が使用する擬似乱数生成器にシード(種)を設定します。
srand()の宣言は以下の通りです。
void srand(unsigned int seed)
この関数は「シード(seed)」と呼ばれるパラメータを受け取ります。シードとは、擬似乱数生成アルゴリズムで使用される整数値のことです。なお、この関数には戻り値はありません。
実際に乱数を取得するには、rand()関数を使用します。0から最大値までの範囲の乱数を得るには、剰余演算子(%)を使って余りを求めます。
シード値には、time(0)関数の戻り値をsrand()に渡しています。time(0)は現在時刻を秒単位で返すため、プログラムを実行するたびに異なるシードが設定され、実行ごとに異なる乱数を得ることができます。
サンプルコード
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
int max;
max = 100; // 乱数を生成する上限を設定
srand(time(0));
cout << "乱数は: " << rand() % max;
return 0;
}実行結果1
乱数は: 51
実行結果2
乱数は: 29
実行結果3
乱数は: 47
このように、srand()でシードを設定し、rand()と剰余演算子を組み合わせることで、指定した範囲内の乱数を簡単に生成できます。なお、より高度で安全な乱数生成が必要な場合は、C++11で導入された<random>ヘッダーの利用も検討するとよいでしょう。
-
Androidで指定した範囲の乱数を生成する方法【初心者向けサンプルコード付き】
この記事では、Androidアプリで指定した範囲(最小値〜最大値)の中からランダムな数値を生成する方法を、実際に動作するサンプルコードとともに解説します。ユーザーが入力した最小値と最大値をもとに、ボタンをタップすると乱数が画面に表示されるシンプルなアプリを作成していきます。 乱数生成の基本的な仕組み Java標準のjava.util.Randomクラスを利用すると、簡単に乱数を生成できます。任意の範囲内の乱数を取得するには、次の式を使います。 output = r.nextInt((max - min) + 1) + min; nextInt(n)メソッドは「0以上 n 未満」の整数を返します
-
C++で五胞体数(ペンタトープ数)を求める方法
五胞体数とは? 五胞体数(ペンタトープ数)は、パスカルの三角形の第5の対角線上に現れる数列として知られています。この数列を定義するには、パスカルの三角形に少なくとも5つの数が必要となるため、数列の最初の数はパスカルの三角形の第4行である 1 4 6 4 1 から始まります。 本チュートリアルでは、n番目の五胞体数を求める方法を解説します。まずは具体的な例を見てみましょう。 入力 : 1出力 : 1入力 : 4出力 : 35 以下の図から出力を確認できます。 この問題は数列に関するものなので、解法ではまず数列のパターンを見つけることから始めます。 解法のアプローチ このプログラムでは、数列の