C# random i zapełnianie tablicy


(Kriston Pl) #1

Witam, stworzyłem skromny program, który przy pomocy polecenia Random zapełnia tablice o rozmiarze 100, następnie podaje ile jest liczb parzystych ile nieparzystych. Problem polega na tym iż zawsze jest 100 liczb parzystych.

1) Co zrobić by random generował różne liczby nie tylko parzyste.

2) Co zrobić żeby random generował np liczby 12,23 lub -34,456.

3) W jaki sposób mogę zmieniać zakres random np -1234,56 do 345,78.

Z góry dzięki za odpowiedzi :wink:

using System;


public

class main

{

    public static void Main()

    {

        int[] tab = new int[100];

        int parzyste = 0, nieparzyste = 0;

        Random rand = new Random(10000);

        for (int i = 0; i < 100; i++)

        {

            tab[1] = rand.Next();

        }

        foreach (int i in tab)

        {

            if (i % 2 == 0)

            {

                parzyste++;

            }

            else

            {

                nieparzyste++;

            }

        }

        Console.WriteLine("Tablica zawiera {0} liczb parzystych i {1} liczb nieparzystych", parzyste, nieparzyste);

        Console.ReadLine();

    }

}

(Fiołek) #2

1) Miałeś pecha i ustawiłeś takie ziarno(parametr konstruktora System.Random), że pierwsze 100 losowanych liczb jest parzyste. Ustaw inne albo nie ustawiaj w ogóle(co jest raczej wskazane, by mieć liczby pseudolosowe za każdym razem, a nie zawsze te same).

2, 3) Random.Next(int, int) przyjmuje wartość minimalną i maksymalną(Random.NextDouble zwraca tylko liczby zakres 0..1), więc możesz zrobić coś takiego:

double liczba = rand.Next(-123456, 34578) / 100.0[/code]

EDIT:

@down: good point, punkt 1 mojej wiadomości jest ciut zły, w tym wypadku(powinno być: że pierwsza losowana liczba jest parzysta).


(system) #3

Wkradł się u Ciebie mały błąd :

tab[1] = rand.Next();

powinno być tab :slight_smile:


(Kriston Pl) #4

1) Ha miałem błąd w zapisie

tab[i] = rand.Next()

zamiast i było 1.

2)Natomiast gdy próbuje podawać zakres dla random wywala mi błąd:


(Fiołek) #5

Spójrz na mój post, przeczytaj go jeszcze raz, ze zrozumieniem, klikając w linki i je CZYTAJĄC. Zakresu nie przekazujesz do konstruktora, tylko do metody Next.


(Kriston Pl) #6

Faktycznie pomyliłem się :oops: , teraz rozumiem dziękuję =D>