Salutare !
Doresc sa rezolv urmatoarea problema cu ajutorul unui program Java:
Sunt date N urne goale în care se amplasează la întâmplare pe rând câte o bilă până atunci când în toate urnele va nimeri cel puţin câte o bilă. Să se calculeze probabilitatea că în prima urnă vor fi mai multe bile decât în a doua. Să se calculeze valoarea medie M(U), unde U – numărul urnelor în care au nimerit 2 bile.
M-am gandit ca urnele pot fi tablouri(array), iar bilele pot fi elementele tabloului.
Problema este, cum sa inserez elemente in mod aleatoriu, in diferite tablouri ?
Am incercat asa, dar nu merge:
<i> </i>import java.lang.Math; import java.util.Random; public class UrneBile { public static void main(String[] args) { // N - urne goale; N = 10 //Urna = tablou; bila = element int[] Urna_1; Urna_1 = new int[2]; int[] Urna_2; Urna_2 = new int[2]; int[] Urna_3; Urna_3 = new int[2]; int[] Urna_4; Urna_4 = new int[2]; int[] Urna_5; Urna_5 = new int[2]; int[] Urna_6; Urna_6 = new int[2]; int[] Urna_7; Urna_7 = new int[2]; int[] Urna_8; Urna_8 = new int[2]; int[] Urna_9; Urna_9 = new int[2]; int[] Urna_10; Urna_10 = new int[2]; //inserare bile in urne for (int i = 1; i < 10; i++) { int numarurna = (int) (Math.random()*10); Urna_numarurna = i; System.out.println(Urna_[numarurna]); } } }
Va rog frumos sa ma ajutati !
Va multumesc anticipat !
La tine problema e ca ai hardcodat indicatorul de urna si e imposibil sa ai vreo referinta numerica catre el.
Cu alte cuvinte acel 1 din Urna_1 nu are nicio valoare numerica. El e un nume de obiect. Nici sa-l parsezi nu cred ca poti.
Daca vrei sa faci cu tablouri mai simplu folosesti matrice de n*1.
Liniile sunt urnele si pe coloana corespunzatoare care este un int, pui nr de bile.
Cu alte cuvinte vei avea un singur obiect de tip int[][] pentru care vei aloca memoria new int[nr_urne][1].
Iar cand vrei sa alegi urna random, alegi intre 1 si nr de urne si acela va fi indicatorul pentru linia(urna) la care se pune o bila.
Ex urna[3][1]=7;//in urna 3 facem sa fie 7 bile.
Ex urna[5][1]=2;//in urna 5 facem sa fie 2 bile
Daca din diverse motive vrei ca fiecare urna sa fie obiect, vei avea clasa Urna care va contine un contor de bile, sa zicem ca e un int nr_bile si o metoda numita Increment() in interiorul clasei care va face ca nr_bile=nr_bile+1.
Fiecare New urna o vei baga intr-un arraylist:
Instantiezi array-ul de urne cu List<Urna> array_urne = new ArrayList<Urna>();
si adaugi cu ajutorul metodei add(E element), cate urne goale doresti in lista de urne. ex: array_urne.add(New Urna(0));
//de precizat ca in constructor vei primi valoarea initiala a lui nr_bile. La apelul New Urna(0) aceasta va fi setata ca fiind 0. Poti sa faci si valoare standard 0 pentru New Urna() in primul constructor din clasa Urna
Dupa ce ai adaugat urnele in array-ul de urne, vei dori sa faci modificari in fiecare urna(sa incrementezi nr de bile).
generezi un numar random sa zicem: n
Vrei sa incrementezi numarul de bile din urna de pe pozitia n a array_urne.
Ca sa faci asta te folosesti de metoda get(int index) din clasa ArrayList astfel:
array_urne.get(n).increment();//adauga in urna n inca o bila