Как сделать Random более случайным не прибегая к паузе? - C#

Узнай цену своей работы

Формулировка задачи:

Вот код, меня в принципе все устраивает, но можно ли сделать как-нибудь без пауз или переместить, ибо при 500 опытах(num=500) работает чуть больше 18 секунд, скажем так мне в принципе без разницы, но если есть способ этого избежать, то лучше избежать...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using System.Security.Cryptography;
 
namespace Lottery
{
    public partial class Form1 : Form
    {    
        int[,] ticket = new int[9, 2];
        int[] res = new int[9];
        int[] pred = new int[9];
        int[] sum = new int[9];
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Stopwatch myStopwatch = new System.Diagnostics.Stopwatch();
            myStopwatch.Start(); //запуск
            int num = Convert.ToInt32(numericUpDown1.Value);            
            textBox1.Text = "";
            for (int i = 0; i < 9;i++ )
            {
                sum[i] = 0;
            }
 
                for (int j = 0; j < num; j++)
                {
                    game();
                    for (int i = 0; i < 9; i++)
                    {
                        sum[i] += res[i];
                    }
                }
            for (int i = 0; i < 9; i++)
            {
                textBox1.Text += Convert.ToString(sum[i]) + " ";
            }
            myStopwatch.Stop();
            TimeSpan ts = myStopwatch.Elapsed;
            textBox2.Text = Convert.ToString(ts);
        }
        void lot()
        {
            Thread.Sleep(1);
            Random rand1 = new Random((int)DateTime.Now.Ticks);
            for (int i = 0; i < 9; i++)
            {
                ticket[i, 0] = rand1.Next(0, 2);
                ticket[i, 1] = 1 - ticket[i, 0];              
            }
        }
        void game()
        {                        
            for (int j = 0; j < 9; j++)
            {
                res[j] = 1;
                Thread.Sleep(1);
                Random rand2 = new Random((int)DateTime.Now.Ticks);
                lot();
                for (int i = 0; i < j+1; i++)
                {
                    pred[i] = rand2.Next(0, 2);
                    if (ticket[i, pred[i]] != 1)
                    {
                        res[j] = 0;
                        break;
                    }
                }
            }
 
        }            
        
    }
}

Решение задачи: «Как сделать Random более случайным не прибегая к паузе?»

textual
Листинг программы
Thread.Sleep(1);
Random rand1 = new Random((int)DateTime.Now.Ticks);

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


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

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

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