Другие языки программирования и технологии

Как сделать Random в C#

Как сделать Random. Я искал но не, где толком понятно не сказано - как сделать Random. Я хочу узнать об этом подробно, чтобы в случае если кто спросит, я смог с лёгкостью дать этому объяснение. И самому будет спокойно, что я знаю что и как работает. На всякий случай скажу, что я хочу сделать карточную игру (для тренировки) Но для того, чтобы сделать Случайную выдачу карт, нужно знать Random. Да и вообще в будущем это я думаю это мне пригодиться :)
Пишу на C#

Если не сложно приведите пример кода с использованием этого Random'a (Не обязательно на карточной игре :))
Mabut Axmedov
Mabut Axmedov
632
Есть три способа (основные в С#):

1ый) это System.Random - его описали выше.

2ой) System.Security.Cryptography.RNGCryptoServiceProvider - Генератор случайных чисел основанный на криптографе, там в рандоме помимо времени используются множество процессов ПК, Делая таким образом числа практически не повторяющими (случайными)

Нет это не случайные числа, если у человека есть данные, то он запросто сможет посчитать число которое генерируется, НО во всяком случае он самую малость зависит от времени.

3) GUID - число.

Обо всем читай в интернете, не хочу подробно все расписывать.

Одно скажу - по рандомности выигрывает 2ой и 3ий.

по скорости создания одного случайного числа выигрывает 3ий.

по скорости заполнения массива (10000х10000 например) выигрывает 1ый и 2ой способ (одинаковы)

П. С. В источниках оставил хорошую на мой взгляд статью по случайным числам с примерами (описано фактически тоже самое что я говорил только чуть подробней)
ВБ
Василий Бурдельный
8 395
Лучший ответ
Не знаю, что тебе недостает. Здесь исчерпывающая информация: http://msdn.microsoft.com/ru-ru/library/system.random(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

using System;
...
//Инициализация
Random r = new Random();
...
//Использование
int x = r.Next(6); //случайное целое число от 0 до 5
double y = r.NextDouble(); //случайное веществеенное число от 0 до 1
вот - в случае если кто спросит)
вопрос несколько не корректный, так как невозможно сгенерить полностью случайное число. Нужно взять какое-то число, и от него уже отходить, написав математический алгоритм генерирующий число, принимая во внимание и то число которое было созданно только что. Random - учитывает время, соответственно, если создавать каждый раз новую Random r = new Random(); int a = r.Next(0,5);
это значит что "а" энное количество раз будет одинаковым.

В интернете существует большое количество скриптов генерирующий случайные номера, отталкивающиеся от того или другого числа (великий гугл! )
пример

http://www.yoda.arachsys.com/csharp/miscutil/

можно - если уж сильно лень и главное получить работающий кусок кода пользоваться этим

public static int RandNumber(int Low, int High)
{
Random rndNum = new Random(int.Parse(Guid.NewGuid().ToString().Substring(0, 8), System.Globalization.NumberStyles.HexNumber));

int rnd = rndNum.Next(Low, High);

return rnd;
}
VC
Vasea Ceala
2 189
скачай рандомник