C#, заполнение массива случайными числами.

Преамбула

Можно сказать, учебная задача. Итак, дан массив типа byte[], необходимо заполнить его случайными числами. И случайные числа нужны понадежнее. Ну хорошо, аппаратный ГСЧ конструировать не будем 🙂 Хотя как-нибудь надо и этот вариант рассмотреть.

Решение

Все решается довольно стандартными методами:

1. Подключаем пространство имен System.Security.Cryptography:

using System.Security.Cryptography;

2. Создаем массив байт нужной длины:

byte[] Arr = new byte[666];

3. Создаем RNGCryptoServiceProvider, т.е. генератор случайных чисел системного криптопровайдера.

RngCsp = new RNGCryptoServiceProvider();

4. Заполняем массив:

RngCsp.GetBytes(Arr);

Примечание: Это довольно простое решение «в лоб», и хоть Майкрософт гарантирует нам, что числа будут прям случайные-случайные, в самом MSDN показан пример с выкрутасами (см. в источниках).

Примечание #2: Метод стандартный для C#, но довольно медленный. Даже медленнее, чем заполнение гигантского массива на 500 Мб одним числом, в примерном приближении и довольно неточно заполнение массива заняло почти 6 секунд:

Random bytes (RNGCryptoServiceProvider): 00:00:05.8453343

Источник

RNGCryptoServiceProvider Class

2 Responses to C#, заполнение массива случайными числами.

  1. Pingback: С#, Заполнение массива одним значением. | Персональный блог Толика Панкова

  2. Pingback: C#, генератор файлов (нужного количества и с определенным содержимым). | Персональный блог Толика Панкова

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *