joppot

コピペで絶対動く。説明を妥協しない

プログラミング

processingで重複しないランダムな数を配列で取得する

投稿日:

Pocket

processingrandom

概要

みなさんこんにちはcandleです。今回はprocessingで重複しないランダムな数を配列で取得する関数を作成したいとおもいます。

前提

なし

SPONSORED LINK


関数を作成する

以下のような関数を作成します。

int[] get_no_dup_numbers(int number){
  
  IntList nums = new IntList(number);
  for (int i = 0; i < number; i++){
    nums.append(i);
  };
  nums.shuffle();
  int[] result = nums.array();
  return result;
}

get_no_dup_numbers

まず、ge_no_dup_numbersは引数として生成するランダムな数を指定します。返り値はintの配列です。
次に受け取った数だけの大きさを持つIntListを作成し、for文で引数で指定した数だけループを回し、iをIntListに加えていきます。例えば、引数が4ならnumsには0から3の数が入ります。

nums.shuffle関数で順番をバラバラにします。int配列のresultにIntListをarrayに変換したものを代入して、それを返します。

実際に使ってみる

適当なprocessingのコードを作成して、先ほどのge_no_dup_numbers関数の下に以下を記述します。

void setup() {
  size(400, 400);
  int[] num = get_no_dup_numbers(5);
  println(num);
}

void draw() {
}

all_code

実行してみましょう。
コンソールに以下のように表示されます。
random_numbers
うまくいきましたね。

任意の数から任意の数までの重複しないランダムな数を取得する

先ほどは0から任意の数までのランダムな数を取得しましたが、今度は任意の数から任意の数までの重複しないランダムな数字を取得してみたいと思います。

int[] get_no_dup_order_numbers(int start_num, int end_num) {
  int num_size = (end_num+1) - start_num; 
  IntList nums = new IntList(num_size);
  for (int i = start_num; i <= end_num; i++) {
    nums.append(i);
  };
  nums.shuffle();
  int[] result = nums.array();
  return result;
}

基本は同じですが、start_numとend_numを与えることで、その範囲の重複しない乱数を取得できます。

実際に使ってみましょう。

void setup() {
  size(400, 400);
  int[] num = get_no_dup_order_numbers(5, 10);
  println(num);
}

void draw() {
}

実行すると、以下のような結果を取得できます。
result_number

まとめ

これで、ランダムな数を取得できますね。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

railsでsvgをviewに表示する

概要 みなさんこんにちはcandleです。 今回はrailsでsvgを出力します。 レスポンシブウェブデザインから始まり、最近ではwebでもsvgの使用が増えてきたような気がします。 手こずらずにsv …

react nativeのandroidでfailed to find Build Tools revision 23.0.1エラーが出る時の対処

概要 みなさんこんにちは、candleです。今回はreact nativeでrun-androidでbuildが失敗する時の対処です。 私の場合最新のandroid-sdkを入れたところ、以下のような …

cakephp2.5.6をfabric+cuisineを使用してインストールする

概要 みなさんこんにちはcandleです。今回はcakephp2.5.6の環境構築をfabricを使用して、インストールしてみましょう。cakephpはrailsと比べると100倍くらい簡単に環境構築 …

macでreact nativeの環境構築をして、iosアプリのhello worldをする

概要 みなさんこんにちはcandleです。 今回は、react nativeの環境構築をmac上で行い、iosアプリでhello worldをしてみたいと思います。 react nativeはreac …

wordpressのget_categoriesでサブカテゴリーを含まないカテゴリー一覧を取得する

概要 みなさんこんにちはcandleです。今回はカテゴリー一覧にサブカテゴリーを含まない取得の仕方を紹介します。 サブカテゴリーを使用しているサイトの場合、場合によってはサブカテゴリーとトップの階層の …

  • English
  • 日本語

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

twitter

スポンサードリンク

アーカイブ