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

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

関連記事

react0.14 + gulp + express + babelでReactのチュートリアル環境構築をする

概要 みなさんこんにちはcandleです。今回は、react0.14のnodeの環境構築をします。 react0.14はまだまだ、開発段階にあり、しばしば仕様変更が行われています。 0.13の時では使 …

phpのsnappyで複数のwebサイトのサムネイルを保存する

概要 前回、snappyの基本的な使い方を試しました。 今回はsnappyを使って、あらかじめ、定義してある複数のwebサイトのサムネイルを保存してみたいと思います。 前提 composerがインスト …

MysqlのSELECT FROMの結果を美しく、見やすく表示する

概要 みなさんこんにちはcandleです。今回はmysqlのデータベースに関する簡単な記事です。 データベース系の言語は最近、様々出てきましたが、私は未だにMysqlくらいしか触っていません。 私はp …

phpmyadminでmysqlデータベースの照合順序を変更する

概要 みなさんこんにちはcandleです。 ちょっとした事なのですが、意外に分からなかったのでまとめました。 phpmyadminを使ってデータベースを作ると、うっかり、utf8_general_ci …

phpでcompassを使った開発の仕方

概要 みなさんこにちはcandleです。今回はphpでcompassを使いたいと思います。 compassは別名scssともいいます。 compassはphpのライブラリが既にあります。 しかし、その …

  • English
  • 日本語

プロフィール


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

twitter

スポンサードリンク

アーカイブ