.NET: Случайное число или количество свободных байтов в памяти? - PullRequest
1 голос
/ 11 ноября 2009

Как узнать количество свободных байтов, доступных в памяти, в .NET?

Кроме того, можете ли вы назвать потенциально лучшее случайное число рядом с new Random().Next(), DateTime.Now.Ticks или доступной системной памятью?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2009

Это может быть лучше, если 2 вопроса ...

Re new Random().Next() - это, очевидно, умрет в узком цикле, поэтому существующий random.Next() будет более случайным ;-p Но вы возможно хотите криптографическую случайность - что-то вроде:

    var random = new RNGCryptoServiceProvider();
    byte[] bytes = new byte[4];
    random.GetBytes(bytes);
    int i = BitConverter.ToInt32(bytes, 0);

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

1 голос
/ 11 ноября 2009

Зачем изобретать велосипед, если здесь есть очень хороший вариант: Random.org ?

RANDOM.ORG предлагает истинные случайные числа любому в интернете. случайность происходит от атмосферного шум, который для многих целей лучше, чем псевдослучайное число алгоритмы, обычно используемые в компьютере программы. Люди используют RANDOM.ORG для проведение розыгрышей, лотерей и лотереи, водить игры и игорные сайты, для научных приложения и для искусства и музыки.

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

0 голосов
/ 11 ноября 2009

Что касается вашего вопроса о показателях памяти, посмотрите на счетчики производительности.

using System.Diagnostics;
...
PerformanceCounter counter = new PerformanceCounter("Memory", "Available Bytes");
long freeBytes = counter.RawValue;

Вам может понадобиться использовать другой счетчик, например «Память \ Свободные и байты списка нулевых страниц”, чтобы получить то, что вы хотите. Я рекомендую поэкспериментировать со счетчиками производительности в perfmon.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...