losowanie w tablicy

0

Zastanawiam się czy w tablicy jednowymiarowej z liczbami zmiennoprzecinkowymi np. gdy elementami tablicy są : 15.7 34.4 9.0 45.2 21.8 itd da się wylosować np dwie z nich i porównać która z nich jest większa??
Bo probuje i jakos nie idzie tak jak trzeba.
Czy to się w ogóle da??

Oczywiście w c#

0

Są programy do rozpoznawania twarzy, analizy pisma, obliczeń dynamiki procesów chaotycznych, a Ty się pytasz czy można wylosować dwie liczby z tablicy i porównać. No błagam...

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication4
{
  class Program
  {
    static void Main(string[] args)
    {
      Random r = new Random();
      double[] myTab = new double[10];
      int i;
      double l1, l2;

      for (i = 0; i < myTab.Length; i++)
      {
        myTab[i] = r.NextDouble();
      }

      l1 = myTab[r.Next(myTab.Length)];
      l2 = myTab[r.Next(myTab.Length)];
      if (l1.CompareTo(l2) < 0) 
      {
        Console.WriteLine("Liczba l1 = {0,0:F3} jest mniejsza od liczby l2 = {1,0:F3}", l1, l2);
      } else
      if (l1.CompareTo(l2) == 0)
      {
        Console.WriteLine("Liczba l1 = {0,0:F3} jest równa od liczbie l2 = {1,0:F3}", l1, l2);
      } else
      if (l1.CompareTo(l2) > 0)
      {
        Console.WriteLine("Liczba l1 = {0,0:F3} jest większa od liczby l2 = {1,0:F3}", l1, l2);
      }

      Console.ReadLine();
    }
  }
}
0

a to rozwiazanie http://4programmers.net/Forum/457862#id457862 dzieki Ktos

double[] tab = { 15.7, 34.4, 9.0, 45.2 }
Random r = new Random();

double jedna = tab[r.Next(tab.Length)];
double druga = tab[r.Next(tab.Length)];

// uwaga: może wylosować tą samą liczbę!

0

To trzeba było napisać, że bez powtórzeń. Jak masz dwie liczby to drugą losujesz w pętli while do czasu aż będzie różna

i1 = r.Next(myTab.Length);

while 
{
  i2 =  r.Next(myTab.Length); 
} (i1 = i2);
0

Albo wrzuc liczby do listy i po wylosowaniu pierwszej usunac z listy. Nie trzeba bedzie czekac na zakonczenie petli.

0

Można też. Poszedłem jednak nazwijmy to "brut force" ze względu na prostotę. Miałem na celu maksymalne uproszczenie kodu. Niemniej na losowanie bez powtórzeń jest kilka sposobów. Ponieważ jednak liczba elementów tablicy jest mała to jakoś tak można sobie pozwolić na taki kodzik. Niemniej rozwiązanie Johnego_Bravo wydaje się być bardziej eleganckie.

0

Hej, przydało się dzieki i pozdrawiam

0

Mały OT. Oceniałem swego czasu projekt studencki, jego fragmentem było wypełnienie dużej tablicy dwuwymiarowej (powiedzmy 1000X1000) losowo rozmieszczonymi liczbami 0 oraz 1. Ilość jedynek k była podawana przez użytkownika programu. Algorytm zastosowany przez studenta wyglądał tak: wpisujemy wszędzie zera, potem losujemy: zewnętrzna pętla mająca k powtórzeń, wewnętrzna pętla aby wylosowana została nowa pozycja w tablicy. Ciekawi mogą sprawdzić ile trwało losowanie dla k=999999.
Nie pamiętam czy można było wpisać k=1000000 i czy dla takiej wartości k stosowany był inny algorytm.

1 użytkowników online, w tym zalogowanych: 0, gości: 1