Почему дважды вызванный рандомный метод дважды рандомит одинаково? - C#
Формулировка задачи:
Взгляните, есть метод рандомной генерации матрицы. Мы его дважды вызываем, и дважды получаем одну и туже матрицу, т.е. две одинаковых перед нами. Разве в двух вызовах не должны генерироваться разные матрицы, они ж рандомно создаются?
static void Main(string[] args)
{
Console.WriteLine("Вторая работа");
Console.Write("\nВведие рамерность матрицы u:");
int u = int.Parse(Console.ReadLine());
Console.Write("\nВведие рамерность матрицы y:");
int y = int.Parse(Console.ReadLine());
/*----------Создаем две матрицы----------------*/
int[,] M = GetRandomArray(u, y);
int[,] N = GetRandomArray(u, y);
/*----------Выводим матрицы на печать----------*/
Console.WriteLine("\nПервая матрица");
PrintArray(M);
Console.WriteLine("\nВторая матрица");
PrintArray(N);
}
/*-----Здесь создается матрица размером заполненная случайными числами---*/
static int[,] GetRandomArray(int rows, int cols)
{
Random random = new Random();
var result = new int[rows, cols];
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
result[i, j] = random.Next(-50, 50);
return result;
}
/*-----------Выводим матрицу на экран----------*/
static void PrintArray(int[,] array)
{
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write("{0,5}", array[i, j]);
}
Console.WriteLine();
}
}Решение задачи: «Почему дважды вызванный рандомный метод дважды рандомит одинаково?»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10000; i++)
{
Console.WriteLine(RandomGenerator());
}
Console.ReadLine();
}
static string RandomGenerator()
{
byte[] b = new byte[1];
RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
rand.GetBytes(b);
return b[0].ToString();
}
}
}