jak mogę wygenerować inny numer, to generuje taką samą liczbęasp.net mvc C# random generujący sam numer
Random rand = new Random(100000);
rand.Next();
jak mogę wygenerować inny numer, to generuje taką samą liczbęasp.net mvc C# random generujący sam numer
Random rand = new Random(100000);
rand.Next();
Po prostu usuń numer początkowy w konstruktorze. Ten materiał siewny jest w zasadzie liczbą, z której generowana jest lista liczb losowych. Jeśli podasz stałą liczbę, twoja lista losowych numerów będzie zawsze taka sama.
Random rand = new Random();
rand.Next();
Nie wiem dokładnie, co jesteś po!
Random rand = new Random(Environment.TickCount);
rand.Next();
+1, podczas gdy rachunek nie jest wielkim ziarnem, to przynajmniej dynamiczny i ogólnie rzecz biorąc prawdopodobnie * wystarczająco dobry *. –
W przyszłości lepiej nie próbować odpowiadać na pytania, gdy, jak mówisz, nie wiesz dokładnie, po co są. – DOK
ok dzięki, wygląda na to, że założyłem to samo co i każdy inny :) – WraithNath
Twoje określenie tego samego nasienia spróbuj tego.
Random rand = new Random();
rand.Next();
Spowoduje to użycie domyślnego materiału siewnego, który jest czasem.
"Inicjuje nowe wystąpienie klasy Losowe, używając domyślnej wartości początkowej zależnej od czasu."
Zgodnie z MSDN: http://msdn.microsoft.com/en-us/library/system.random.aspx
Re komentarzu powyżej, jak wygenerować losowy „numer” w ustalonym zakresie.
// Generate and display 5 random integers from 50 to 100.
Console.WriteLine("Five random integers between 50 and 100:");
Console.Write("{0,8:N0}", rand.Next(50, 101));
(Pobrane z powyższego łącza MSDN) Możesz teraz generować żądany zakres.
Istnieje potencjalny problem z używaniem domyślnego materiału siewnego opartego na czasie. W przypadku wielowątkowej aplikacji działającej na procesorze wielordzeniowym stosunkowo prawdopodobne jest, że dwa różne wątki generują dokładnie tę samą wartość losową (ponieważ możliwe jest, aby chwyciły dokładnie ten sam czas systemowy, a tym samym wygenerowały tę samą wartość) . Zamiast tego użyłbym skrótu Guid.NewGuid(). – MusiGenesis
Jeśli taki wniosek został utworzony, to popraw, jednak użycie klasy Random() nie powinno być używane do niczego innego niż sprawianie, by rzeczy wyglądały losowo. – LiamB
Pytanie jest oznaczone jako "asp.net", które jest dokładnie tym rodzajem wielowątkowego środowiska, które może powodować tego typu problemy. Dwóch użytkowników, którzy klikną ten sam kod w tym samym czasie, może zobaczyć te same "losowe" wartości. – LukeH
Random rand = new Random();
rand.Next(0,1000); // minimum = 0, maximum = 999
Warto dodać, że minimum zawiera wartość maksymalną. Powyższe wygeneruje liczbę w (włącznie) zakresie 0-999. –
@lain nie wiedział, że ... dobre oko – WernerCD
Random rand=new Random(DateTime.Now.Millisecond);
rand.Next();
To zawsze działa na mnie.
Dlaczego nie po prostu 'new Random()', ponieważ używa 'Environment.TickCount' jako domyślnego materiału siewnego? – LukeH
@LukeH: masz jakąś dokumentację na ten temat? Wszystko, co kiedykolwiek widziałem udokumentowane, to to, że jest obsadzone wartością opartą na czasie, co niekoniecznie oznacza, że używa 'Environment.TickCount'. – MusiGenesis
@MusiGenesis: Wydaje mi się, że jest to szczegół implementacji, a nie określona gwarancja, ale można to łatwo potwierdzić za pomocą ILDASM lub Reflectora. Lub robienie czegoś takiego jak 'var r1 = new Random(); var r2 = new Random (Environment.TickCount); while (true) Console.WriteLine (r1.Next() == r2.Next()); 'powinien wyświetlać" true "w sposób ciągły, chyba że * naprawdę * nie ma pecha i dwa konstruktory działają po każdej stronie kleszcza. – LukeH
będzie ograniczać liczbę wygenerowanych znaków lub może wygenerować 10000 lub 1000000000 – maztt
Nie sądzę, że istnieje limit liczby wygenerowanych liczb. Nie ma również związku z liczbą znaków, ponieważ metoda '.Next()' zwraca 32-bitową liczbę całkowitą ze znakiem większą lub równą zero i mniejszą niż MaxValue. –