Добрый день! Занимаюсь по книге Эккеля и столкнулся с ниже представленным примером. Не могу понять, почему на выводе программа всегда выдает один и тот же результат? Если я правильно понял, то каждый раз символы должны генерироваться случайно. Заранее спасибо!
import java.nio.*;
import java.util.*;
public class RandomWords implements Readable {
private static Random rand = new Random(47);
private static final char[] capitals =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
private static final char[] lowers =
"abcdefghijklmnopqrstuvwxyz".toCharArray();
private static final char[] vowels =
"aeiou".toCharArray();
private int count;
public RandomWords(int count) { this.count = count; }
public int read(CharBuffer cb) {
if(count-- == 0)
return -1;
cb.append(capitals[rand.nextInt(capitals.length)]);
for(int i = 0; i<4; i++) {
cb.append(capitals[rand.nextInt(vowels.length)]);
cb.append(capitals[rand.nextInt(lowers.length)]);
}
cb.append(" ");
return 10;
}
public static void main(String[] args) {
Scanner s = new Scanner(new RandomWords(10));
while(s.hasNext())
System.out.println(s.next());
}
} /* Output :
YAZBREYAC
FDWBNECDR
GDEAZCMDM
RAEEUACCO
NEOADBSCW
HAGBACKEX
REQCCCBEI
NEMASBTCH
KEUEUDZDG
WAQCZBYDY
Причина здесь
private static Random rand = new Random(47);
На правой странице конструктор использует константное семя 47
, что значит, что он всегда будет генерировать ту же самую последовательность случайных чисел.
Когда вы используете другое число вместо 47
, вы получите другую последовательность, но опять всегда ту же самую.
Чтобы получить всегда новую и новую последовательность, нужно всегда задать новое семя - стандартный способ, как это сделать, есть использовать текущие бремя, например
private static Random rand = new Random(new Date().getTime());
Виртуальный выделенный сервер (VDS) становится отличным выбором
Ребят, посоветуйте как проще всего сделать хранение данных, точнее передачу между компами
Подскажите пожалуйста, как сделать что бы после выполнения запроса:
Часто замечал, что если я провожу какие-то математические операции с какой-то переменной, то вывести её с помощью