Use the Random.nextInt(int) method:
final String[] proper_noun = {"Fred", "Jane", "Richard Nixon", "Miss America"};
Random random = new Random();
int index = random.nextInt(proper_noun.length);
System.out.println(proper_noun[index]);
This code is not completely safe: one time out of four it'll choose Richard Nixon.
To quote a documentation Random.nextInt(int):
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)
In your case passing an array length to the nextInt will do the trick - you'll get the random array index in the range [0; your_array.length)
Use the Random.nextInt(int) method:
final String[] proper_noun = {"Fred", "Jane", "Richard Nixon", "Miss America"};
Random random = new Random();
int index = random.nextInt(proper_noun.length);
System.out.println(proper_noun[index]);
This code is not completely safe: one time out of four it'll choose Richard Nixon.
To quote a documentation Random.nextInt(int):
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)
In your case passing an array length to the nextInt will do the trick - you'll get the random array index in the range [0; your_array.length)
if you use List instead of arrays you can create simple generic method which get you random element from any list:
public static <T> T getRandom(List<T> list)
{
Random random = new Random();
return list.get(random.nextInt(list.size()));
}
if you want to stay with arrays, you can still have your generic method, but it will looks bit different
public static <T> T getRandom(T[] list)
{
Random random = new Random();
return list[random.nextInt(list.length)];
}
Videos
First you'll have to move the S array to be an instance variable or a static variable, because currently it's local to your main method, and can't be accessed from your get method.
Then you can get a random String this way :
private Random rnd = new Random();
public String get ()
{
return S[rnd.nextInt(S.length)];
}
You can use java.util.Random to generate random things. However, keep in mind that, it is not secure, not really random.
You can get random chars from the array S:
String randomString = "";
Random rand = new Random();
for(int i=0;i<=4;i++)
{
randomString += S[rand.nextInt(S.length())].charAt(0);
}
System.out.println(randomString);
Try:
list[r.nextInt(list.length)];
The accepted answers is not working for me the solution worked for me is
List<String> myList = Arrays.asList("A", "B", "C", "D");
Suppose you have this above ArrayList and you want to randomize it
Random r = new Random();
int randomitem = r.nextInt(myList.size());
String randomElement = myList.get(randomitem);
If you print this randomElement variable you will get random string from your ArrayList
Two things you have to change:
- currentRoom should be String Array
Printing string array should be done using Arrays.toString
String[] currentRoom; String [][] rooms = {{"Start", "Treasure Room1"}, {"Goblin Home1", "Spider Nest1"}}; Random rand = new Random(); currentRoom = rooms [rand.nextInt(rooms.length)]; System.out.println(Arrays.toString(currentRoom));
Sample Output
[Goblin Home1, Spider Nest1]
Hope this helps!
Why do you need a 2D array of strings? I think you can manage with a 1D array instead.
String currentRoom;
String[] rooms = {"Start", "Treasure Room1", "Goblin Home1", "Spider Nest1"};
Random rand = new Random();
currentRoom = rooms [rand.nextInt( rooms.length)];
System.out.println(currentRoom);
Do you mean generating random string from this set of characters? You can perform it in this way:
int len = ...; // length of resulting string
StringBuilder builder = new StringBuilder();
Random rand = new Random();
for (int i = 0; i < len; ++i) {
String c = arry[rand.nextInt() % arry.length];
builder.append(c);
}
String str = builder.toString();
To get a String of characters you can do
static final String chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"abcdefghijklmnopqrstuvwxyz" +
"0123456789`~!@#$%^&*()-_" +
"=+;:'|\"<,>./?";
static final Random rand = new Random();
public static String randString(int length) {
char[] gen = new char[length];
for (int i = 0; i < length; i++)
gen[i] = chars.charAt(rand.nextInt(chars.length));
return new String(gen);
}