Почему дважды вызванный рандомный метод дважды рандомит одинаково? - 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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы