乱数ジェネレーターをシードする値が必要なゲームを作成しています。long
テキストを入力して、シードに値に変換できるようにしたいのですRandom()
。
プログラムはコマンドラインで実行され、使用できるScanner
を使用する必要があると想定しています。
私が知りたかったのは、Scanner
取得したものをlong
値に変換する方法です。
テキストからシードを生成するだけかどうかはわかりません。ここに提案があります:
String str = "Sample string";
long seed = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
seed = seed + (long)ch;
}
Random ran = new Random(seed);
メソッドを使用できますString.hashCode()
。これは、Minecraft の Java バージョンが行うことです。
編集:これは実際にはint
ではなく を返しますlong
が、誰かに役立つ場合に備えてそのままにしておきます。