オープンアプリでのランダム関数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kanade

オープンアプリでのランダム関数

#1

投稿記事 by kanade » 15年前

C言語の質問でなくてすみません。

携帯用のオープンアプリを作っております。 ※Java
ランダム関数を使おうとしているのですがエラーが出てしまいます・・・。

if(mode == M_SHUFFLE) rand = (int)(Math.random() * 10 + 1);

この様な書き方では駄目なのでしょうか?
rand=10等と入れると問題なくコンパイルが通ります。

又、別の質問になってしまうのですがテキストエディタで修正して~と繰り返しております。
【Wireless Toolkit 2.5.2】
VisualStadioみたいな開発環境はないのでしょうか?

YuO

Re:オープンアプリでのランダム関数

#2

投稿記事 by YuO » 15年前

単に,WTK環境にはjava.lang.Math#randomが無いだけです。
WTKの下のdocs (もしかしたら私が別途ダウンロードして展開した可能性有り) のapi以下を見ても,
docs/api/midp/java/lang/Math.htmlには,
[フィールド]
・E
・PI
[メソッド]
・abs(double a)
・abs(float a)
・abs(int a)
・abs(long a)
・ceil(double a)
・cos(double a)
・floor(double a)
・max(double a, double b)
・max(float a, float b)
・max(int a, int b)
・max(long a, long b)
・min(double a, double b)
・min(float a, float b)
・min(int a, int b)
・min(long a, long b)
・sin(double a)
・sqrt(double a)
・tan(double a)
・toDegrees(double angrad)
・toRadians(double angdeg)
[java.lang.Objectからの継承メソッド]
・equals
・getClass
・hashCode
・notify
・notifyAll
・toString
・wait
のみが書かれています。

J2SEのソースから引っ張ってきてもよいのですが,結構大がかりになりそうなので,
適当な線形合同法なりの疑似乱数アルゴリズムを自分で描いた方が楽かもしれません。


> VisualStadioみたいな開発環境はないのでしょうか?

Javaと言えばまずはEclipse。
というわけで探してみると,作り方をメモしてくれている方がいました。
参考になればと思います。
SITE: Pleiades(Eclipse 3.5.2 Galileo)によるJ2ME開発環境構築メモ: 執事マウホフの手帳
http://rundog.txt-nifty.com/mau/2010/05 ... lipse.html

kanade

Re:オープンアプリでのランダム関数

#3

投稿記事 by kanade » 15年前

そうだったんですか・・・。
自分で似乱数アルゴリズムを作る・・・。
多分、無理ですwww

そうなると仕様を変えたほうがよいのでしょうか?
どうしてもrand関数を使いたいのですが・・・

へろりくしょん

Re:オープンアプリでのランダム関数

#4

投稿記事 by へろりくしょん » 15年前

別に車輪の再発明をしなくとも、疑似乱数のアルゴリズムなら、あっちこっちに転がってるので、
適当にチョイスすればいいだけじゃないですか?


「乱数 アルゴリズム」でグーグル先生に聞いたら、このサイトがトップにでました。
ライセンスがどうなっているのかは解りませんが、ソースものってます。


http://ayusya.hp.infoseek.co.jp/AlgorithmRandom.html

天空橋

Re:オープンアプリでのランダム関数

#5

投稿記事 by 天空橋 » 15年前

用途にもよりますが、乱数テーブルを使うのはどうでしょうか?

通常のJavaSEより、乱数を例えば、300個くらい出力して、それを基にstaticな配列として以下のように、定義します。

static final float[/url] RAND_TABLE = {166.59293f, 166.59293f, ...};

そして、上記の配列を参照していく、rand関数を作ってみると、擬似的にrand関数のようなものが作れるかと思います。

public static int randIndex = System.currentTimeMillis();
public static float random() {
return RAND_TABLE[(randIndex++) % RAND_TABLE.Length];
}

※ 上記ソースは今コンパイル出来る環境がないため、確認していません。

天空橋

Re:オープンアプリでのランダム関数

#6

投稿記事 by 天空橋 » 15年前

先ほど、乱数テーブルを利用すればどうでしょうか?と記載したのですが、
ちょっと調べてみたら、CLDC1.1に乱数を扱うクラスRandomクラスがあるようなので、そちらを利用すればよろしいのではないでしょうか?

http://java.sun.com/javame/reference/ap ... andom.html

なお、オープンアプリと記載しているところから、au用の携帯アプリを作成していると推察するのですが、
au用の携帯アプリの場合、CLDC1.1/MIDP2.0の仕様に基づいたアプリを利用できる旨が記載されています。

http://www.au.kddi.com/ezfactory/tec/sp ... appli.html

なので、CLDC1.1とMIDP2.0のAPIリファレンスを読むことをお勧めします。

kanade

Re:オープンアプリでのランダム関数

#7

投稿記事 by kanade » 15年前

回答ありがとうございます。

Randomクラスは使えるのでしょうか?
if(mode == M_SHUFFLE) rand = Random();
のようにしてみるとエラーが出てしまいます・・・。

どの様に使えば良いのかがわかりません・・・。

天空橋

Re:オープンアプリでのランダム関数

#8

投稿記事 by 天空橋 » 15年前

提示されたコードを見る限りでは、インスタンスの生成がされていないように見受けられます。
Randomは関数ではなく、クラスです。

もし、この言葉の意味がわからない場合は、アプリケーションを作るよりも先に、
Javaの基本を学んだほうがよろしいかと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る