Jak wygenerować losowy numer int?

Jak wygenerować losową liczbę całkowitą W C#?

 2064
Author: Uwe Keim, 2010-04-24

30 answers

The Random klasa służy do tworzenia liczb losowych. (Pseudo-losowe, czyli oczywiście.).

Przykład:

Random rnd = new Random();
int month  = rnd.Next(1, 13);  // creates a number between 1 and 12
int dice   = rnd.Next(1, 7);   // creates a number between 1 and 6
int card   = rnd.Next(52);     // creates a number between 0 and 51

Jeśli chcesz utworzyć więcej niż jedną liczbę losową, zachowaj instancję Random i użyj jej ponownie. Jeśli utworzysz nowe instancje zbyt blisko w czasie, wygenerują One tę samą serię liczb losowych, jak generator losowy jest rozdzielany z zegara systemowego.

 2654
Author: Guffa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-17 11:05:16

Pytanie wygląda bardzo prosto, ale odpowiedź jest nieco skomplikowana. Jeśli widzisz prawie każdy zasugerował użycie klasy losowej, a niektórzy zasugerowali użycie klasy krypto RNG. Ale kiedy wybrać co.

W tym celu musimy najpierw zrozumieć termin przypadkowość i stojącą za nim filozofię. [[3]}zachęcam do obejrzenia tego filmu, który zagłębia się w filozofię losowości przy użyciu C# https://www.youtube.com/watch?v=tCYxc-2-3fY [[3]}najpierw zrozummy filozofię przypadkowości. Kiedy mówimy osobie, aby wybrać między czerwonym, zielonym i żółtym, co dzieje się wewnętrznie. Co sprawia, że osoba wybiera czerwony, żółty lub zielony?

C # Random

Pewna początkowa myśl trafia do umysłu osoby, która decyduje o jego wyborze, może to być ulubiony kolor , szczęśliwy kolor i tak dalej. Innymi słowy jakiś początkowy wyzwalacz, który określamy losowo jako Nasiona.To ziarno jest punktem początkowym, wyzwalaczem, który nakłania go do wybrania losowej wartości.

Teraz, jeśli ziarno jest łatwe do odgadnięcia, to tego rodzaju liczby losowe są określane jako PSEUDO , A gdy ziarno jest trudne do odgadnięcia, te liczby losowe są określane jako zabezpieczone liczby losowe.

Na przykład osoba wybiera kolor w zależności od pogody i kombinacji dźwięku wtedy trudno byłoby odgadnąć początkowy nasiona.

C # Random

A teraz powiem coś ważnego:-

*Klasa"Random" generuje tylko PSEUDO losową liczbę i aby wygenerować bezpieczną liczbę losową musimy użyć klasy "RNGCryptoServiceProvider".

C # Random

Klasa Losowa pobiera wartości zalążkowe z zegara procesora, co jest bardzo przewidywalne. Innymi słowy, RANDOM class of C# generuje pseudo losowe liczby, poniżej znajduje się kod dla tego samego.

var random = new Random();
int randomnumber = random.Next()

Podczas gdy RNGCryptoServiceProvider klasa wykorzystuje entropię OS do generowania nasion. Entropia OS jest losową wartością, która jest generowana za pomocą dźwięku, kliknięcia myszką i czasu klawiatury, temperatury termicznej itp. Poniżej znajduje się kod dla tego samego.

using (RNGCryptoServiceProvider rg = new RNGCryptoServiceProvider()) 
{ 
    byte[] rno = new byte[5];    
    rg.GetBytes(rno);    
    int randomvalue = BitConverter.ToInt32(rno, 0); 
}

Aby zrozumieć entropię OS zobacz ten film z 14:30 https://www.youtube.com/watch?v=tCYxc-2-3fY gdzie logika entropii OS jest wyjaśniona. Tak więc wprowadzenie prostych słów RNG Crypto generuje bezpieczne liczby losowe.

 317
Author: Shivprasad Koirala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-21 01:38:52

Za każdym razem, gdy robisz nową Random() jest inicjalizowana . Oznacza to, że w ciasnej pętli otrzymujesz tę samą wartość wiele razy. Należy zachować pojedynczą instancję losową i używać dalej na tej samej instancji.

//Function to get random number
private static readonly Random getrandom = new Random();

public static int GetRandomNumber(int min, int max)
{
    lock(getrandom) // synchronize
    {
        return getrandom.Next(min, max);
    }
}
 245
Author: Pankaj Mishra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-12 21:37:07

Uważaj, że {[0] } jest ustawiony na bieżącym znaczniku czasu.

Jeśli chcesz wygenerować tylko jedną liczbę możesz użyć:

new Random().Next( int.MinValue, int.MaxValue )

Aby uzyskać więcej informacji, spójrz na Random Klasa, chociaż proszę pamiętać:

Jednakże, ponieważ zegar ma skończoną rozdzielczość, użycie parametrycznego konstruktora do tworzenia różnych losowych obiektów w bliskiej kolejności tworzy generatory liczb losowych, które wytwarzają identyczne sekwencje losowe liczby

Więc nie używaj tego kodu do generowania serii liczb losowych.

 101
Author: Fyodor Soikin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-22 22:03:40
Random r = new Random();
int n = r.Next();
 60
Author: Joren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-24 23:10:23

Chciałem dodać wersję zabezpieczoną kryptograficznie:

Rngcryptoserviceprovider Class ( MSDN or dotnetperls)

Implementuje IDisposable.

using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
   byte[] randomNumber = new byte[4];//4 for int32
   rng.GetBytes(randomNumber);
   int value = BitConverter.ToInt32(randomNumber, 0);
}
 34
Author: joordan831,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-18 21:02:29

Możesz użyć metody Jona SkeetaStaticRandom wewnątrz biblioteki klas MiscUtil, którą zbudował dla pseudolosowej liczby.

using MiscUtil;
...

for (int i = 0; i < 100; 
    Console.WriteLine(StaticRandom.Next());
 18
Author: mbcrump,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-15 20:47:44

Utwórz losowy obiekt

Random rand = new Random();

I użyj go

int randomNumber = rand.Next(min, max);

Nie musisz inicjować new Random() za każdym razem, gdy potrzebujesz losowej liczby, inicjuj jedną losowo, a następnie używaj jej tyle razy, ile potrzebujesz w pętli lub cokolwiek

 18
Author: Mohamed Selim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-02 16:33:43

Próbowałem wszystkich tych rozwiązań z wyjątkiem odpowiedzi COBOL... lol

Żadne z tych rozwiązań nie było wystarczająco dobre. Potrzebowałem randoms w szybkiej pętli int i otrzymywałem Tony zduplikowanych wartości nawet w bardzo szerokich zakresach. Po zbyt długim rozliczaniu się z losowymi wynikami postanowiłem w końcu raz na zawsze rozwiązać ten problem. Chodzi o ziarno.

Tworzę losową liczbę całkowitą przez parsowanie niecyfrowych cyfr z Guid, a następnie używam tego do tworzenia instancji Moja przypadkowa Klasa.

public int GenerateRandom(int min, int max)
{
    var seed = Convert.ToInt32(Regex.Match(Guid.NewGuid().ToString(), @"\d+").Value);
    return new Random(seed).Next(min, max);
}

Update: siew nie jest konieczny, jeśli raz utworzysz instancję losowej klasy. Więc najlepiej byłoby utworzyć statyczną klasę i odwołać metodę.

public static class IntUtil
{
   private static Random random;

   private static void Init()
   {
      if (random == null) random = new Random();
   }

   public static int Random(int min, int max)
   {
      Init();
      return random.Next(min, max);
   }
}

Wtedy możesz użyć klasy statycznej w ten sposób..

for(var i = 0; i < 1000; i++)
{
   int randomNumber = IntUtil.Random(1,100);
   Console.WriteLine(randomNumber); 
}
Przyznam, że bardziej podoba mi się to podejście.
 16
Author: Proximo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-20 04:50:20

Liczby generowane przez wbudowaną klasę Random (System.Losowe) generuje pseudo losowe liczby.

Jeśli chcesz prawdziwych liczb losowych, najbliżej możemy uzyskać "bezpieczny Pseudo generator losowy", który można wygenerować za pomocą klas kryptograficznych w C#, takich jak RNGCryptoServiceProvider.

Mimo to, jeśli nadal potrzebujesz Prawdziwych liczb losowych, będziesz musiał użyć zewnętrznego źródła, takiego jak urządzenia rozliczające rozpad radioaktywny jako zalążek generatora liczb losowych. Ponieważ, przez definicja, każda liczba generowana przez czysto algorytmiczne środki nie może być naprawdę losowa.

 12
Author: Anshita Arya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-22 15:40:37

Zmodyfikowana odpowiedź z TUTAJ .

Jeśli masz dostęp do procesora zgodnego z Intel Secure Key, możesz generować rzeczywiste liczby losowe i ciągi znaków za pomocą tych bibliotek: https://github.com/JebteK/RdRand i https://www.rdrand.com/

Po prostu pobierz najnowszą wersję z tutaj , Dołącz Jebtek.RdRand i dodać do niego polecenie using. Wtedy wszystko, co musisz zrobić, to:

// Check to see if this is a compatible CPU
bool isAvailable = RdRandom.GeneratorAvailable();

// Generate 10 random characters
string key       = RdRandom.GenerateKey(10);

 // Generate 64 random characters, useful for API keys 
string apiKey    = RdRandom.GenerateAPIKey();

// Generate an array of 10 random bytes
byte[] b         = RdRandom.GenerateBytes(10);

// Generate a random unsigned int
uint i           = RdRandom.GenerateUnsignedInt();

Jeśli nie masz zgodnego procesora do wykonania kodu na, wystarczy skorzystać z usług RESTful w rdrand.com. z biblioteką rdrandom wrapper dołączoną do twojego projektu, musisz to zrobić (otrzymasz 1000 darmowych połączeń podczas rejestracji):

string ret = Randomizer.GenerateKey(<length>, "<key>");
uint ret   = Randomizer.GenerateUInt("<key>");
byte[] ret = Randomizer.GenerateBytes(<length>, "<key>");
 12
Author: JebaDaHut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-03 07:41:05

Użyłem poniższego kodu, aby mieć losową liczbę (niezalecaną):

var random = new Random((int)DateTime.Now.Ticks);
var randomValue = random.Next(startValue, endValue + 1);
 9
Author: shA.t,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-31 06:35:42

Póki to jest w porządku:

Random random = new Random();
int randomNumber = random.Next()
Chcesz kontrolować limit (min i max mumbers) przez większość czasu. Musisz więc określić, gdzie zaczyna się i kończy losowa liczba.

Metoda Next() przyjmuje dwa parametry, min i max.

Więc jeśli chcę, aby moja losowa liczba wynosiła między powiedzmy 5 a 15, po prostu zrobię

int randomNumber = random.Next(5, 16)
 6
Author: Ojonugwa Jude Ochalifu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-26 16:57:48

To jest klasa, której używam. Działa jak RandomNumber.GenerateRandom(1, 666)

internal static class RandomNumber
{
    private static Random r = new Random();
    private static object l = new object();
    private static Random globalRandom = new Random();
    [ThreadStatic]
    private static Random localRandom;
    public static int GenerateNewRandom(int min, int max)
    {
        return new Random().Next(min, max);
    }
    public static int GenerateLockedRandom(int min, int max)
    {
        int result;
        lock (RandomNumber.l)
        {
            result = RandomNumber.r.Next(min, max);
        }
        return result;
    }
    public static int GenerateRandom(int min, int max)
    {
        Random random = RandomNumber.localRandom;
        if (random == null)
        {
            int seed;
            lock (RandomNumber.globalRandom)
            {
                seed = RandomNumber.globalRandom.Next();
            }
            random = (RandomNumber.localRandom = new Random(seed));
        }
        return random.Next(min, max);
    }
}
 6
Author: AskethZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-11 17:10:22

Jako notatka dla przyszłych odniesień.

Jeśli używasz. NET Core, wiele losowych instancji nie jest tak niebezpieczne jak wcześniej. Zdaję sobie sprawę, że to pytanie pochodzi z 2010 roku, ale ponieważ to pytanie jest stare, ale ma jakąś atrakcję, myślę, że dobrze jest udokumentować zmianę.

Możesz odnieść się do tego pytania, które zrobiłem jakiś czas temu:

Microsoft zmienił losowy domyślny seed?

Zasadniczo zmienili domyślny seed z Environment.TickCount na Guid.NewGuid().GetHashCode(), więc jeśli utworzysz 2 instancje losowe, które nie będą wyświetlać tych samych liczb.

Możesz zobaczyć różnice w pliku z. NET Framework/. Net Core (2.0.0+) tutaj: https://github.com/dotnet/coreclr/pull/2192/commits/9f6a0b675e5ac0065a268554de49162c539ff66d

Nie jest tak bezpieczny jak RNGCryptoServiceProvider, ale przynajmniej nie da ci dziwnych wyników.

 6
Author: Lucca Ferri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-27 13:08:29

Chciałem zademonstrować, co się dzieje, gdy za każdym razem używany jest nowy generator losowy. Załóżmy, że masz dwie metody lub dwie klasy, każda wymagająca liczby losowej. I naiwnie je kodujesz jak:

public class A
{
    public A()
    {
        var rnd=new Random();
        ID=rnd.Next();
    }
    public int ID { get; private set; }
}
public class B
{
    public B()
    {
        var rnd=new Random();
        ID=rnd.Next();
    }
    public int ID { get; private set; }
}
Myślisz, że dostaniesz dwa różne identyfikatory?
class Program
{
    static void Main(string[] args)
    {
        A a=new A();
        B b=new B();

        int ida=a.ID, idb=b.ID;
        // ida = 1452879101
        // idb = 1452879101
    }
}

Rozwiązaniem jest zawsze użycie pojedynczego statycznego generatora losowego. Tak:

public static class Utils
{
    public static readonly Random random=new Random();
}

public class A
{
    public A()
    {
        ID=Utils.random.Next();
    }
    public int ID { get; private set; }
}
public class B
{
    public B()
    {
        ID=Utils.random.Next();
    }
    public int ID { get; private set; }
}
 4
Author: John Alexiou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-08 19:24:51

Dla silnych losowych nasion zawsze używam CryptoRNG a nie czasu.

using System;
using System.Security.Cryptography;

public class Program
{
    public static void Main()
    {
        var random = new Random(GetSeed());
        Console.WriteLine(random.Next());
    }

    public static int GetSeed() 
    {
        using (var rng = new RNGCryptoServiceProvider())
        {
            var intBytes = new byte[4];
            rng.GetBytes(intBytes);
            return BitConverter.ToInt32(intBytes, 0);
        }
    }
}
 3
Author: Davit Tvildiani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-25 17:53:22
Random random = new Random ();
int randomNumber = random.Next (lowerBound,upperBound);
 3
Author: ReRoute,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-14 11:26:30

Liczby obliczane przez komputer w procesie deterministycznym nie mogą z definicji być losowe.

Jeśli chcesz prawdziwych liczb losowych, losowość pochodzi z szumu atmosferycznego lub rozpadu radioaktywnego.

Możesz spróbować na przykład RANDOM.ORG (zmniejsza wydajność)

 2
Author: Stefano Lonati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-14 13:58:09
Random rand = new Random();
int name = rand.Next()

Umieść dowolne wartości w drugim nawiasie upewnij się, że ustawiłeś nazwę, pisząc prop i double tab, aby wygenerować kod

 2
Author: user3773367,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-27 09:33:17

Jeśli chcesz, aby CSRNG generował losowe liczby od min do max, to jest dla Ciebie. Inicjalizuje Random klasy z bezpiecznymi losowymi nasionami.

    class SecureRandom : Random
    {
        public static byte[] GetBytes(ulong length)
        {
            RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider();
            byte[] bytes = new byte[length];
            RNG.GetBytes(bytes);
            RNG.Dispose();
            return bytes;
        }
        public SecureRandom() : base(BitConverter.ToInt32(GetBytes(4), 0))
        {

        }
        public int GetRandomInt(int min, int max)
        {
            int treashold = max - min;
            if(treashold != Math.Abs(treashold))
            {
                throw new ArithmeticException("The minimum value can't exceed the maximum value!");
            }
            if (treashold == 0)
            {
                throw new ArithmeticException("The minimum value can't be the same as the maximum value!");
            }
            return min + (Next() % treashold);
        }
        public static int GetRandomIntStatic(int min, int max)
        {
            int treashold = max - min;
            if (treashold != Math.Abs(treashold))
            {
                throw new ArithmeticException("The minimum value can't exceed the maximum value!");
            }
            if(treashold == 0)
            {
                throw new ArithmeticException("The minimum value can't be the same as the maximum value!");
            }
            return min + (BitConverter.ToInt32(GetBytes(4), 0) % treashold);
        }
    }
 2
Author: Jessie Lesbian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-28 00:38:43

Sorry, OP rzeczywiście wymaga losowego int wartość, ale dla prostego celu dzielenia się wiedzą jeśli chcesz losową wartość BigInteger możesz użyć następującej instrukcji:

BigInteger randomVal = BigInteger.Abs(BigInteger.Parse(Guid.NewGuid().ToString().Replace("-",""), NumberStyles.AllowHexSpecifier));
 1
Author: Ciro Corvino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-10 12:19:33

Istnieje wiele funkcji użytkowych lub usług, które są lepiej buforowane w ten sam sposób, w jaki System.Random powinno być, więc nadaje się do ogólnej implementacji:

static public class CachedService<T> where T : new() {
    static public T Get { get; } = new T();
}

Aby użyć dla losowego (lub podobnego):

CachedService<System.Random>.Get.Next(999);
 1
Author: Matt Parkins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-18 08:16:49

Zakładam, że chcesz równomiernie rozłożony generator liczb losowych, jak poniżej. Liczba losowa w większości języków programowania, w tym C# i c++, nie jest odpowiednio tasowana przed ich użyciem. Oznacza to, że otrzymasz ten sam numer w kółko, co nie jest tak naprawdę losowe. Aby uniknąć losowania tej samej liczby w kółko, potrzebujesz nasion. Zazwyczaj kleszcze w czasie są ok dla tego zadania. Pamiętaj, że otrzymasz tę samą liczbę w kółko, jeśli używasz tego samego ziarna co raz czas. Więc staraj się zawsze używać różnych nasion. Czas jest dobrym źródłem nasion, ponieważ zawsze chage.

int GetRandomNumber(int min, int max)
{
    Random rand = new Random((int)DateTime.Now.Ticks);
    return rand.Next(min, max);
}

Jeśli szukasz generatora liczb losowych dla rozkładu normalnego, możesz użyć transformacji Box-Mullera. Sprawdź odpowiedź yoyoyoyosef w losowym pytaniu zmiennej Gaussa. Ponieważ chcesz liczbę całkowitą, musisz oddać podwójną wartość do liczby całkowitej na końcu.

Random rand = new Random(); //reuse this if you are generating many
double u1 = 1.0-rand.NextDouble(); //uniform(0,1] random doubles
double u2 = 1.0-rand.NextDouble();
double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) *
         Math.Sin(2.0 * Math.PI * u2); //random normal(0,1)
double randNormal =
         mean + stdDev * randStdNormal; //random normal(mean,stdDev^2)

Losowe Zmienne Gaussa

 0
Author: auto9817,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-22 13:18:36

Najprostszym sposobem jest prawdopodobnie {[0] } wygenerowanie liczby od 1 do 2.

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-09 19:36:31

Możesz spróbować z losową wartością nasion używając poniżej:

var rnd = new Random(11111111); //note: seed value is 11111111

string randomDigits = rnd.Next();

var requestNumber = $"SD-{randomDigits}";
 -1
Author: Rejwanul Reja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-23 05:36:43

Dlaczego nie użyć int randomNumber = Random.Range(start_range, end_range)?

 -2
Author: Recomer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-19 16:57:11

Użyj jednej instancji losowej wielokrotnie

// Somewhat better code...
Random rng = new Random();
for (int i = 0; i < 100; i++)
{
    Console.WriteLine(GenerateDigit(rng));
}
...
static int GenerateDigit(Random rng)
{
    // Assume there'd be more logic here really
    return rng.Next(10);
}

W tym artykule przyjrzymy się, dlaczego przypadkowość powoduje tak wiele problemów i jak je rozwiązać. http://csharpindepth.com/Articles/Chapter12/Random.aspx

 -2
Author: Ankit Agarwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-14 12:30:22

Wypróbuj te proste kroki, aby utworzyć losowe liczby:

Utwórz funkcję:

private int randomnumber(int min, int max)
{
    Random rnum = new Random();
    return rnum.Next(min, max);
}

Użyj powyższej funkcji w miejscu, w którym chcesz użyć liczb losowych. Załóżmy, że chcesz go użyć w polu tekstowym.

textBox1.Text = randomnumber(0, 999).ToString();

0 to min, a 999 to max. Możesz zmienić wartości na dowolne.

 -2
Author: Hani Mehdi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-06 15:56:17

Zawsze mam metody, które generują losowe liczby, które pomagają w różnych celach. Mam nadzieję, że to też wam pomoże:

public class RandomGenerator  
{  
    public int RandomNumber(int min, int max)  
    {  
        var random = new Random();  
        return random.Next(min, max);  
    }  

    public string RandomString(int size, bool lowerCase)  
    {  
        var builder = new StringBuilder();  
        var random  = new Random();  
        char ch;  

        for (int i = 0; i < size; i++)  
        {  
            ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));  
            builder.Append(ch);  
        }  

        if (lowerCase)  
            return builder.ToString().ToLower();  
        return builder.ToString();  
    }  
}
 -2
Author: PatsonLeaner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-17 11:24:37