2015年6月5日
ごきげんよう。
PostgreSQLで試験用のサンプルデータが欲しかったので、
Javaでデータ用CSVファイルを出力するコードを書きました。
重複しないランダムの整数値がポイントです。
# Qiitaにもあげてみました。
欲しいデータの形としては
昇順の数値,重複なしのランダムな数値,重複なしのランダムな数値を含めた文字列
です。
とりあえず 1000000行出力します。
ところで SyntaxHighlighter ってのを使ってソースコードを表示してみました。
Chromeだと表示までに時間がかかるかもしれないです。
/* * 2015年6月5日作成 * * 作成者:show * * 以下のCSVファイルを出力する。 * * 1から1000000の値を順番に出力, * 1から1000000の値を重複なしでランダムな値を出力, * 1から1000000の値を重複なしでランダムな値と文字列と組み合わせて出力 * */ import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Random; public class RandomValueFileCreate { public static void main(String args[]) { try { //出力先を作成する FileWriter fw = new FileWriter("C:\\temp\\sampleData.csv", false); PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); String str = "hoge"; //出力する文字列 final int n = 1000000; //要素数 boolean num[] = new boolean[n]; //重複判定用 Random rand = new Random(); //ランダムな数値 // すべての重複判定用配列をfalseにしておく for(int i=0; i<n; i++){ num[i] = false; } //要素数回数をループ for(int i=0; i < n ; ){ int p = rand.nextInt(n); if(num[p] == false){ //まだ使ってない値か判定 pw.println((i+1) + "," + (p+1) + "," + str + "," + (p+1)); //初めて使う値ならファイル出力 num[p] = true; //使った値はtrueにしておく i++; //ループ用の値をインクリメント } } //閉じる pw.close(); //終了メッセージを画面に出力する System.out.println("出力が完了しました。"); } catch (IOException e) { //例外時処理 e.printStackTrace(); } } }
0 件のコメント:
コメントを投稿