Czy istnieje jakaś wbudowana funkcja do wybierania random (losowej) liczby np z przedziału 1-100 ? Jeśli nie to jak można by ją stworzyć samodzielnie? Czekam na jakiekolwiek sugestię i dziękuję z góry.
Wszystko ładnie pięknie, ale potrzebuję jeszcze wybierania losowego w array lub arraylist. Próbowałem podkładać pod ten skrypt, ale nie wychodziło.
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class random {
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>(); //Zbior, w którym trzymamy wylosowane liczby
int ile = 1; //Ilosc liczb do wylosowania
int max = 10; //Wielkosc zbioru z jakiego bedziemy losowac
Random rand = new Random();
//Losowanie liczb
while (set.size() < ile) {
set.add(new Integer(rand.nextInt(max)));
}
//Wypisanie wylosowanych liczb
for(Integer i : set) {
System.out.print(i + " ");
}
}
}
Może jednak da się go przerobić na wybieranie stringów z tablicy ?
To w pakiecie util jest klasa Random?
int liczba = (int)(Math.random()*max);
krzysiumed napisał(a)
To w pakiecie util jest klasa Random?
int liczba = (int)(Math.random()*max);
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Random.html
divix napisał(a)
Wszystko ładnie pięknie, ale potrzebuję jeszcze wybierania losowego w array lub arraylist. Próbowałem podkładać pod ten skrypt, ale nie wychodziło.
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class random {
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>(); //Zbior, w którym trzymamy wylosowane liczby
int ile = 1; //Ilosc liczb do wylosowania
int max = 10; //Wielkosc zbioru z jakiego bedziemy losowac
Random rand = new Random();
//Losowanie liczb
while (set.size() < ile) {
set.add(new Integer(rand.nextInt(max)));
}
//Wypisanie wylosowanych liczb
for(Integer i : set) {
System.out.print(i + " ");
}
}
}
Może jednak da się go przerobić na wybieranie stringów z tablicy ?
Ale o co dokładnie Ci chodzi?
O wybranie losowych wpisów z arraylisty. I jeżeli liczba liter wylosowanych będzie większa niż np 20 literek to wtedy pętla się kończy.
A w czym jest problem ?
ArrayList<String> al=.....;
......
Random r=new Random();
for(int i=0;i<granica;i++)
{
int indeks=r.nextInt(al.size());
System.out.println(al.get(indeks));
}
Tak, ale wynik chce dodać do output="wyrazy"
package package1;
import java.io.*;
import java.util.*;
public class Pirate implements Talking{
public String file;
private ArrayList <Pirates2> pirates2;
ArrayList<String> words = new ArrayList<String>();
public Pirate(String f) {
pirates2=new ArrayList<Pirates2>();
file=f;
}
public String talk(int i){
String output=" ";
load();
//all();
for (int q=0; q<pirates2.size(); q++){
Random rand = new Random();
words.add(new String(rand.nextLong()(pirates2)));
output = output + " ";
System.out.println("Words: "); all2();
if(output.length()<20)
break;
}
return output;
}
public void load() {
Scanner infile;
try {
infile = new Scanner(new InputStreamReader (new FileInputStream(file)));
for (int i=0; i<150; i++){
String n = infile.next();
Pirates2 w = new Pirates2(n);
pirates2.add(w);
}
infile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void add(Pirates2 w) {
pirates2.add(w);
}
public void all()
{
System.out.println(pirates2.size());
//pirates2.shuffle();
for(Pirates2 w:pirates2)
{
System.out.println(w.toString());
}
}
public void all2()
{
System.out.println(words.size());
//pirates2.shuffle();
for(String w:words)
{
System.out.println(w + " ");
}
}
}
Do outputa mają być dodawane stringi, które zostały wylosowane w funkcji.
//zamiast System.out.println(al.get(index));
output+=" "+al.get(index);
public String talk(int i){
String output=" ";
load();
//all();
for (int q=0; q<pirates2.size(); q++){
Random rand = new Random();
int index=rand.nextInt(pirates2.size());
output+=" "+pirates2.get(index);
if(output.length()<20)
break;
}
return output;
}
Moze mi ktos powiedzieć czemy ta pętla nie działa? Funkcja drukuje tylko 1 wyraz, czyli po pierwszy razie jest Od razu break.
if(output.length()<20) break;
Zatem jeśli długość pierwszego wylosowanego stringa będzie<19, to nastąpi break
BTW wyrzuć
Random rand = new Random();
poza pętle
Tak, masz rację, właśnie wpadłem też na to sekundę przed Tobą :), i dzięki za porady, zmienie położenie randoma. Jeszcze raz wielkie dzięki wszystkim.