プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

配列の内容をシャッフルする


このアルゴリズムは配列を取得し、配列の内容をシャッフルします。配列要素のランダム順列を生成します。

この問題を解決するために、最後のインデックスから始まる要素を交換して、配列内にランダムに生成されたインデックスを作成します。

入力と出力

Input:
An array of integers: {1, 2, 3, 4, 5, 6, 7, 8}
Output:
Shuffle of array contents: 3 4 7 2 6 1 5 8 (Output may differ for next run)

アルゴリズム

randomArr(array, n)

入力: 配列、要素の数。

出力: 配列の内容をシャッフルします。

Begin
   for i := n – 1 down to 1, do
      j := random number from 0 to i
      swap arr[i] and arr[j]
   done
End

#include <iostream>
#include<cstdlib>
#include <ctime>
using namespace std;

void display(int array[], int n) {
   for (int i = 0; i < n; i++)
      cout << array[i] << " ";
}

void randomArr ( int arr[], int n ) {           //generate random array element
   srand (time(NULL));                 //use time to get different seed value to start
   for (int i = n-1; i > 0; i--) {
      int j = rand() % (i+1);           //randomly choose an index from 0 to i
      swap(arr[i], arr[j]);            //swap current element with element placed in jth location
   }
}

int main() {
   int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
   int n = 8;
   randomArr(arr, n);
   display(arr, n);
}

出力

4 7 8 2 6 3 5 1

  1. 配列の積のCプログラム

    n個の要素の配列arr[n]が与えられた場合、タスクはその配列のすべての要素の積を見つけることです。 7つの要素の配列arr[7]があるように、その製品は次のようになります 例 Input: arr[] = { 10, 20, 3, 4, 8 } Output: 19200 Explanation: 10 x 20 x 3 x 4 x 8 = 19200 Input: arr[] = { 1, 2, 3, 4, 3, 2, 1 } Output: 144 以下で使用されるアプローチは次のとおりです − 配列入力を取得します。 そのサイズを見つけます。 配列を反復処理し、その配列の

  2. Cの配列内の範囲の積

    配列、L、R、Pを入力として指定し、タスクは、モジュロの下の積を出力としてLとRの間の範囲を見つけ、それを表示することです。 図に示されているように、要素の配列と、2としての左の値であるLと2としての右の値であるRがあります。ここで、プログラムはそれらの間の範囲の積を見つける必要があります。 例 Input-:  A[] = { 1, 2, 3, 4, 5, 6 }    P = 29  L = 2 R = 6 Output-: 24 Input-: A[] = {1, 2, 3, 4, 5, 6},    L =