[C言語]配列のランダムなインデックスを取得するには?

C言語

どうも、ちょげ(@chogetarou)です。

配列(array)のランダムなインデックスを取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(array)のランダムなインデックスを取得するには、rand()を使います。

まず、配列の要素数を取得します。

そして、「%」の左辺にrand()、右辺に配列の要素数を指定します。

//myArray=対象の配列
int n = sizeof(myArray) / sizeof(myArray[0]); //配列の要素数を取得
int index = rand() % n; //ランダムなインデックスを取得

上記の「%」は、配列のランダムなインデックスを取得します。

「%」は、左辺の値を右辺の値で割った余りを取得する演算子です。

また、rand()は、乱数を生成する関数です。

上記の「%」は、rand()で生成した乱数を要素数で割った余りを取得しています。

スポンサーリンク

使用例

#include <stdio.h>
#include <time.h>

int main(void){
    int nums[] = { 1, 2, 3, 4, 5 };
    srand(time(NULL)); //乱数のシード値を設定
 
    int n = sizeof(nums) / sizeof(nums[0]);
    for (int i = 0; i < n; i++) {
        int index = rand() % n;
        printf("%d ", nums[index]);
    }
    
    return 0;
}
出力:
3 3 2 4 3

コメント

タイトルとURLをコピーしました