こんな感じで。

Java

	/**
	 * 指定した長さの一様分布な重複しないランダムな添え字を作成します。
	 * @param length
	 * @param seed
	 * @return
	 */
	public static int[] getRandomIndex(int length, long seed) {
		Random random = new Random(seed);
		int[] buffer = new int[length];
		for (int i = 0; i < length; i++) {
			buffer[i] = i;
		}
		int[] out = new int[length];
		int n, rest;
		for (int i = 0; i < length; i++) {
			rest = length – i;
			n = (random.nextInt() & 0x7FFFFFFF) % rest;
			out[i] = buffer[n];
			if (1 != rest – n) {
				for (int j = 1; j < rest – n; j++) {
					buffer[n + j - 1] = buffer[n + j];
				}
			}
		}
		return (out);
	}

MATLAB

function [ out ] = getRandomIndex( length, seed )
%[ out ] = getRandomIndex( length, seed )
%指定した長さの一様分布な重複しないランダムな添え字を作成します。

if nargin==2
	s = RandStream.create('mt19937ar','seed',seed);
	RandStream.setDefaultStream(s);
end

data = 1:1:length;
out  = zeros(1,length);
rest = length;

%重複しないランダムな値を作成
for j=1:length
	n = 1 + fix(rest * rand(1,1));
	out(j) = data(n);
	if 0~=rest-n
		for k=1:rest-n
			data(n+k-1) = data(n+k);
		end
	end
	rest = rest – 1;
end

関連記事

  • JavaでStringとint[]の相互変換する方法JavaでStringとint[]の相互変換する方法 はじめに charAt1文字を1変数(コードポイントで)に割り当てたい。 そんな要望からStringとint[]との相互変換を行ってみます。 使い方はお察し下さい。 文字列から数値配列へ static public int[] toInteger(String text) { int textlength = text.length(); for (int […] Posted in プログラミング
  • MATLABを用いた相関係数のt検定MATLABを用いた相関係数のt検定 function[p] = TTestForCorrelationCoefficient(r, n, type) %Student's t-test of correlation coefficient %相関係数のt検定 %『入力』 %r 相関係数 %n 相関係数を調べた時のサンプル数 %type 1で片側検定, 2で両側検定(デフォルト) %『出力』 %p […] Posted in アルゴリズム
  • MATLABでExcelのTDISTとTINVを使うMATLABでExcelのTDISTとTINVを使う Excel の TDIST関数は、 TDIST(http://office.microsoft.com/ja-jp/excel-help/HP005209312.aspx) より引用 スチューデントの t 分布のパーセンテージ (確率) を返します。 数値 (x) は t の計算値で、この t に対してパーセンテージが計算されます。 t […] Posted in アルゴリズム
  • bsxfunっぽいものbsxfunっぽいもの function [ out ] = bsxfun( func, target, data ) %[ out ] = bsxfun( func, target, data […] Posted in アルゴリズム
  • Bresenhamアルゴリズムで線分の計算は早いのかなBresenhamアルゴリズムで線分の計算は早いのかな 以前、直線を描くのにこんなのを作った。 特に工夫点もない、素直な方法である。 #module "linem" #deffunc line2 int line_x1,int line_y1,int line_x2,int line_y2 line_xabs = abs(line_x1-line_x2) line_yabs = […] Posted in アルゴリズム
  • RSA暗号の解説に出てくる数値の逆数のmodRSA暗号の解説に出てくる数値の逆数のmod RSA暗号に紹介には、必ず次のような式がでてきます。 これ 今日は、この式について解説します。 といっても・・・すみません。言い訳になりますが、 数学科出身ではなく、間違ったこというかもしれません。 それをふまえていただいて・・・解説させていただきます。 まず、m = (p - 1)(q - 1) […] Posted in アルゴリズム