Losowanie losowych liczb xD

0

Czesc, chcialbym wylosowac liczby, ale w taki sposob aby nie byly takie same... Po odpaleniu tego kodu wyrzuca mi 1 1 1 1 1 [...] :/. O co biega? W C# tez jest jakis srand()? Wiem ze problem moze sie wydac banalny, ale jestem nowy w tym jezyku, a w kursie uzywaja wlasnie podobnego kodu.

using System;

class losuj
{
	public int zakres(int min, int max)
	{
		Random kostek = new Random(3000);
                return kostek.Next(min, max);
	}
}

namespace trening
{
	class Class
	{
		[STAThread]
		static void Main(string[] args)
		{
			for(int i = 0; i < 10; i++)
			{
				losuj losowacz = new losuj();
				Console.Write(losowacz.zakres(1,6) + " ");
            }
			Console.ReadLine();
		}
	}
}
0
using System;

class losuj
{
        public int zakres(int min, int max)
        {
                Random kostek = new Random();  //bez jawnego określenia ziarna
                return kostek.Next(min, max);
        }
}

namespace trening
{
        class Class
        {
                [STAThread]
                static void Main(string[] args)
                {
                        losuj losowacz = new losuj(); //utworzenie obiektu PRZED pętlą
                        for(int i = 0; i < 10; i++)
                        {                                
                                Console.Write(losowacz.zakres(1,6) + " ");
            }
                        Console.ReadLine();
                }
        }
}
0
using System;

class losuj
{
    private Random kostek = new Random(); // ustawiałeś stały seed!!
    private List<int> bylo =new List<int>();


    public int zakres(int min, int max)
    {
        // Random kostek = new Random(); // i po co za każdym razem od nowa tworzyc klase losującą?
        int liczba;
        do 
        {
            liczba = kostek.Next(min, max);
        } while( bylo.Contains(liczba) );
        bylo.Add(liczba);
        return liczba;
    }
    public void wyczysc()
    {
        bylo.Clear();
    }
}

namespace trening
{
    class Class
    {
        [STAThread]
        static void Main(string[] args)
        {
            losuj losowacz = new losuj();
            losowacz.wyczysc();
            for (int i = 0; i < 10; i++)
            {
                //losuj losowacz = new losuj(); // po co za każdym razem tworzyc klase?
                Console.Write(losowacz.zakres(1, 6) + " ");
            }
            Console.ReadLine();
        }
    }
}

W takiej postaci oczywiście program nigdy sie nie zakończy, bo chcesz wylosować więcej unikalnych liczb, niż jest w ich zakresie.

0

Użyjcie Randomize()

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