joppot

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

プログラミング

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

投稿日:

Pocket

processingrandom

概要

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

前提

なし


関数を作成する

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

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の正規表現を使用して文字列から任意の文字を取得する

概要 みなさんこんにちはcandleです。今回はrailsの正規表現を使って任意の文字を文字列から取得する方法を紹介します。 rails4になってからなのか、railsはrubyであるにもかかわらず、 …

Rails pluginを使ったgemの作り方[2](rails組み込み編)

概要 みなさんこんにちはcandleです。前回に引き続き、gemの作成をやっていきましょう。 今回はgemを作成したら、それをrailsプロジェクト上で読み込み、動作テストをするところをやります。 前 …

railsのmodelで各データが何個あるかカウントする

概要 皆さんこんにちはcandleです。 今回は、railsでレコードのデータそれぞれ何個あるのか数える方法を紹介します。 mysqlだと簡単なのですが、railsだとよくわからなかったので、いろいろ …

phpとmysqlでアカウント管理する時のテストユーザーのパスワードの暗号化はmysqlのsha1でもできる

by brewbooks 概要 みなさんこんにちはcandleです。最近はphpでサービスを書いたりしています。その中でテストユーザーのアカウント管理でパスワードを暗号化してデータベースに収めています …

MAMPのSQLiteManagerを使用してsqlite3データベースの作成とデータベースファイルの設置

概要 みなさんこんにちはcandleです。今回はsqliteデータベースをMAMPを使用して作成しましょう。 PHP5.3からsqlite3のクラスが充実して、mysqlを使用しなくてもsqliteで …

  • English
  • 日本語

プロフィール


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

スポンサードリンク

アーカイブ